首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于istringstream的存储带逗号数字的有关问题

2012-05-21 
关于istringstream的存储带逗号数字的问题需要逐行读入一个带逗号的文本数据,然后再将数据转存到vector中。

关于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()到那种情况下就会出错,不知道怎么处理,望大神指点。

[解决办法]

C/C++ code
[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);
 
这句就不要要了。

热点排行