我正在尝试从文件中读取数据,其中每行有15个以逗号和空格分隔的字段。数据不是单一类型。目前我正在做的是逐行读取数据,并将每一行传递给istringstream,并在每次读取之间执行以下操作:
ins.ignore(25,','); //ins is the istringstream
然而,我不喜欢我的方法,想要一个更干净的方法。这样做会更好吗?另外,我只想使用stl而不使用外部库。基本上我想要的是使用逗号作为分隔符来标记每一行。
答案 0 :(得分: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 ...
答案 1 :(得分:0)
清洁方法(如果我理解的话)只是将逗号读入虚拟变量
char comma;
ins >> comma;
这将跳过任何空格,然后读取逗号,然后您可以忽略它。