Couper les espaces d'une chaîne
Je sais qu'il ya plusieurs façons de le faire en Java et C qui sont sympas, mais en C++ je n'arrive pas à trouver un moyen facile de mettre en œuvre une chaîne de caractères la fonction de coupe.
C'est ce que j'ai actuellement:
string trim(string& str)
{
size_t first = str.find_first_not_of(' ');
size_t last = str.find_last_not_of(' ');
return str.substr(first, (last-first+1));
}
mais à chaque fois que j'essaie de l'appeler
trim(myString);
J'obtiens l'erreur du compilateur
/tmp/ccZZKSEq.o: In function `song::Read(std::basic_ifstream<char,
std::char_traits<char> >&, std::basic_ifstream<char, std::char_traits<char> >&, char const*, char const*)':
song.cpp:(.text+0x31c): undefined reference to `song::trim(std::string&)'
collect2: error: ld returned 1 exit status
Je suis en train d'essayer de trouver un moyen simple et standard de rogner attaque et de fuite des espaces à partir d'une chaîne sans prendre jusqu'à 100 lignes de code, et j'ai essayé en utilisant les regex, mais ne pouvait pas obtenir que cela fonctionne ainsi.
Je ne peux pas utiliser Boost.
source d'informationauteur Sej
Vous devez vous connecter pour publier un commentaire.
Votre code est bien. Ce que vous voyez est un linker question.
Si vous mettez votre code dans un seul fichier comme ceci:
puis faire
g++ test.cc
et exécuter une.hors, vous verrez ça marche.Vous devriez vérifier si le fichier qui contient le
trim
fonction est incluse dans le lien étape de votre processus de compilation.Ici est de savoir comment vous pouvez le faire:
Et les fonctions de soutien sont mis en oeuvre:
Et une fois que vous avez toutes ces à la place, vous pouvez écrire ceci:
Essayer cette
Je pense que substr() lève une exception si str ne contient que de l'espace.
Je voudrais le modifier pour le code suivant: