хочу проанализировать ввод строки для int, используя sstream - PullRequest
0 голосов
/ 15 декабря 2011

Я новичок в программировании на С ++.Я прочитал, как можно выполнить синтаксический анализ в SO-вопросах, используя vector ( Int tokenizer ). Но я попробовал следующее для массива.Я могу разобрать только одно число из строки.Если входная строка "11 22 33 и т. Д.",Что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

Проблема в том, что:

cin>>s;

Считывает одно разделенное пробелами слово в s.Таким образом, только 11 входит в с.

То, что вы хотите:

std::getline(std::cin, s);

В качестве альтернативы вы можете читать числа непосредственно из std::cin

while(std::cin >> j) // Read a number from the standard input.
0 голосов
/ 15 декабря 2011

We can use cin to get strings with the extraction operator (>>) as we do with fundamental data type variables

cin >> mystring;

However, as it has been said, cin extraction stops reading as soon as if finds any blank space character, so in this case we will be able to get just one word for each extraction.

С http://www.cplusplus.com/doc/tutorial/basic_io/

Так что вы должны использовать getline ()

string s;
cout<<"enter the string of numbers \n";
getline(cin, s);
0 голосов
/ 15 декабря 2011

Кажется, cin>>s остановится на первом пробеле.Попробуйте это:

cout << "enter the string of numbers" << endl;
int j = -1;
vector<int> a;
while (cin>>j) a.push_back(j);
...