Я пытаюсь создать приложение командной строки, где пользователь может вводить команды и данные, но я действительно не понимаю, как работает istream_iterator, как я могу получить весь ввод (до введите) в вектор? Прямо сейчас он создает новый цикл while для каждого слова, а это не то, что нужно.C++ Загрузка пользовательского ввода в вектор
int main(int argc, char* argv[])
{
string buffer;
//vector<string> vbuff;
CliHandler clihandler(argc, argv);
int state = clihandler.State();
while (state != CliHandler::STATE_EXIT) {
cout << ">>";
//Beolvasás
cin >> buffer;
stringstream sstream(buffer);
istream_iterator<string> begin(sstream);
istream_iterator<string> end;
vector<string> vbuff(begin,end);
copy(vbuff.begin(), vbuff.end(), std::ostream_iterator<string>(std::cout, "\n"));//test
//vbuff = vector<string>((istream_iterator<string>(cin)), istream_iterator<string>());
//copy(vbuff.begin(), vbuff.end(), std::ostream_iterator<string>(std::cout, "\n"));
switch(clihandler.State(vbuff[0])) {
// [command] [data1] [data2] ...
}
}
return 0;
}
Я предполагаю, что вы получили этот этот код из StackOverflow вопрос (HTTP [Как разбить строку в C++?]: // StackOverflow. ком/вопросы/236129/как к расколу-а-строки-в-с). Я предлагаю вам использовать [этот ответ] (http://stackoverflow.com/a/236803/1750541), поскольку он гораздо более масштабируемый. – Ian
Я пробовал, но я не знаю, как использовать эту функцию. Зачем вам нужна строка const для ее использования, я не понимаю. – appl3r
Из того, что я могу сказать, вы пытаетесь написать код, который разделит строку. т. е. потребуется длинная серия символов, разделенная на вектор меньших фрагментов. Однако ваше описание наверху говорит о чтении в пользовательском вводе. Вы уверены, что поняли, что вы пытаетесь сделать? Я вижу две возможности: 1) Чтение ввода, разделение ввода вверх и сохранение, завершение. Или 2) Чтение ввода, сохранение ввода, чтение ввода, сохранение ввода и т. Д. – Ian