关于istringstream的存储带逗号数字的问题
需要逐行读入一个带逗号的文本数据,然后再将数据转存到vector中。使用字符串流处理的时候要求用ignore()函数处理逗号,但是文本数据长度是未知的 (例如8,135,919,2322,275,915,2012,165,919,231,619,235,919,23)
istringstream buffer(line); // line是从文本中读出的string
buffer.exceptions(istringstream::failbit | istringstream::badbit);
int n;
vector<int> v;
while( buffer >> n){
buffer.ignore(10,',');
v.push_back(n);
}
因为数据最后没有逗号,好像ignore()到那种情况下就会出错,不知道怎么处理,望大神指点。
[解决办法]
[User:root Time:09:49:28 Path:/home/liangdong/cpp]$ ./main81359192322275915201216591923161923591923[User:root Time:09:49:30 Path:/home/liangdong/cpp]$ cat main.cpp #include <iostream>#include <sstream>#include <string>using namespace std;int main(int argc, char* const argv[]) { string str = "8,135,919,2322,275,915,2012,165,919,231,619,235,919,23"; istringstream buffer(str); int n; while (buffer>>n) { cout<<n<<endl; buffer.ignore(str.size(), ','); } return 0;}
[解决办法]
buffer.exceptions(istringstream::failbit | istringstream::badbit);
这句就不要要了。