Le programme prend une chaîne à l'aide de getline, puis passe cette chaîne à une fonction où elle stocke la chaîne dans des sous-chaînes séparées par des espaces. Je l'ai fait juste en lisant des caractères avec une boucle.Détection d'un argument de chaîne dans une boucle
Cependant, maintenant j'essaie de passer un deuxième argument de chaîne qui sépare les chaînes en sous-chaînes si la boucle rencontre des caractères dans l'argument 2ème chaîne. C'est ce que j'ai jusqu'ici.
#include "std_lib_facilities.h"
vector<string> split(const string& s, const string& w) // w is second argument
{
vector<string> words;
string altered;
for(int i = 0; i < s.length(); ++i)
{
altered+=s[i];
if(i == (s.length()-1)) words.push_back(altered);
else if(s[i] == ' ')
{
words.push_back(altered);
altered = "";
}
}
return words;
}
int main()
{
vector<string> words;
cout << "Enter words.\n";
string word;
getline(cin,word);
words = split(word, "aeiou"); // this for example would make the letters a, e, i, o,
// and u divide the string
for(int i = 0; i < words.size(); ++i)
cout << words[i];
cout << endl;
keep_window_open();
}
Cependant, il est évident que je ne peux pas faire quelque chose comme
if(s[i] == w)
parce que s [i] est char et w est une chaîne. Ai-je besoin d'utiliser une chaîne pour analyser la chaîne à la place de la boucle que j'ai implémentée? En fait, je jouais avec la stringstream, mais je ne sais pas vraiment comment cela pourrait aider parce que, de toute façon, je dois lire les caractères 1 par 1.
P.S. Les arguments à scinder doivent être passés en tant que chaînes, et le formulaire d'entrée dans main() doit être getline.
Il semble, basé sur les restrictions sur l'utilisation des chaînes et getline dans votre P.S., que cela puisse être devoirs. Si c'est le cas, veuillez utiliser le tag "devoirs" sur votre question. –
Ce n'est pas. Auto-apprentissage du livre. – trikker