Stringstream извлечь целое число
почему я не могу извлечь целое значение в Num
переменной?
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
string Digits("1 2 3");
stringstream ss(Digits);
string Temp;
vector<string>Tokens;
while(ss >> Temp)
Tokens.push_back(Temp);
ss.str(Tokens[0]);
int Num = 0;
ss >> Num;
cout << Num; //output: 0
}
4 ответов
когда поток извлекает последний из 3 digist "1 2 3", будет установлено состояние eof. Это не очищается членом str (), вам нужно сделать это самостоятельно. Измените код на:
ss.clear();
ss.str(Tokens[0]);
почему вы читаете в temp string
переменной?
Вы можете просто прочитать из stringstream в int...
int main()
{
string Digits("1 2 3");
stringstream ss(Digits);
int Temp;
vector<int> Tokens;
while(ss >> Temp)
Tokens.push_back(Temp);
}
вы должны сбросить все флаги состояния (eofbit) и привести поток в хорошее состояние (goodbit):
ss.clear(); // clear status flags
ss.str(Tokens[0]);
причина в том, что если вы продолжаете извлекать до конца, вы нажмете конец, и флаг eof будет установлен на этом потоке. После этого операции чтения будут отменены, и вам нужно снова очистить этот флаг. В любом случае, после очистки и сброса строки вы можете продолжить извлечение целых чисел.
STL! : P
stringstream ss("1 2 3");
vector<int> Tokens;
copy(istream_iterator<int>(ss), istream_iterator<int>(), back_inserter(Tokens));