2

可能重复:
在 C++ 中拆分字符串

我正在尝试从文件中读取数据,其中每行有 15 个字段,由逗号和空格分隔。数据不是单一类型的。目前我正在做的是逐行读取数据,并将每一行传递给 istringstream,并且在每次读取之间我执行以下操作:

ins.ignore(25,','); //ins is the istringstream

然而,我不喜欢我的方法,想要一个更干净的方法。有什么更好的方法呢?另外我只想使用 stl 而没有外部库。基本上我想要的是使用逗号作为分隔符来标记每一行。

4

2 回答 2

3

只需使用自定义操纵器:

std::istream& comma(std::istream& in) {
    if ((in >> std::ws).get() != std::char_traits<char>::to_int_type(',')) {
        in.setstate(std::ios_base::failbit);
    }
    return in;
}
...
in >> v0 >> comma >> v1 >> comma ...
于 2012-11-23T06:37:45.893 回答
0

更清洁的方法(如果我理解正确的话)只是将逗号读入一个虚拟变量

char comma;
ins >> comma;

这将跳过任何空格,然后读取逗号,然后您可以忽略它。

于 2012-11-23T06:34:45.907 回答