Stringstream extract integer
12,666
Solution 1
Why are you reading into a temp string
variable?
You can just read from the stringstream into an int...
int main()
{
string Digits("1 2 3");
stringstream ss(Digits);
int Temp;
vector<int> Tokens;
while(ss >> Temp)
Tokens.push_back(Temp);
}
Solution 2
You have to reset all status flags (eofbit) and bring the stream into a good state (goodbit):
ss.clear(); // clear status flags
ss.str(Tokens[0]);
The reason is that if you keep extracting until the end, you will hit the end, and the eof flag will be set on that stream. After that, read operations will be canceled and you have to clear that flag out again. Anyway, after clearing and resetting the string, you can then go on extracting the integers.
Solution 3
STL! :P
stringstream ss("1 2 3");
vector<int> Tokens;
copy(istream_iterator<int>(ss), istream_iterator<int>(), back_inserter(Tokens));
Author by
jackhab
Updated on June 15, 2022Comments
-
jackhab over 1 year
Why do I fail to extract an integer value into the
Num
variable?#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 }