Программа принимает строку с использованием getline и передает эту строку функции, где она хранит строку в подстроках, разделенных пробелами. Я сделал это, просто прочитав символы с помощью цикла.Обнаружение строкового аргумента в цикле
Однако теперь я пытаюсь передать второй строковый аргумент, который разделяет строки на подстроки, если цикл встречает символы во втором строковом аргументе. Это то, что у меня есть до сих пор.
#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();
}
Однако, очевидно, что я не могу сделать что-то вроде
if(s[i] == w)
потому что s [я] является голец и вес является строкой. Нужно ли использовать stringstream для синтаксического анализа строки вместо цикла, который я реализовал? Я действительно играл со струнным потоком, но на самом деле не знаю, как это могло бы помочь, потому что в любом случае мне нужно прочитать символы 1 на 1.
P.S. Аргументы для split должны быть переданы как строки, а форма ввода в main() должна быть getline.
Похоже, что, основываясь на ограничениях на использование строк и getline в вашей P.S., это может быть домашнее задание. Если да, используйте тег «домашняя работа» на свой вопрос. –
Это не так. Самообучение из книги. – trikker