c++ - 使用 STL 在 C++ 中对字符串进行标记

标签 c++ stl inputstream

Possible Duplicate:
Splitting a string in C++

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

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

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

最佳答案

只需使用自定义操纵器:

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 ...

关于c++ - 使用 STL 在 C++ 中对字符串进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13523911/

相关文章:

c++ - 对 std::multiset 中的相等范围进行排序

c++ - 为什么竞赛条件的输出不是随机的?

c# - 嵌入式单声道 : Creating/marshaling a C# struct in C++

c++ - C++中读取转换字符的问题

c++ - 如何加快 std::string 与字符串文字的比较速度?

java - 在 Android/Java 中使用 JSON/Base64 编码的文件

c++ - 使用 C++ 从 Windows 资源管理器获取图像属性

c++ - 使用 std::vector 作为数据缓冲区

java - InputStream.skip() 何时跳过少于预期的字节数?

java - 当某些字节错误时,BitmapFactory.decodeStream(inputStream) 总是返回 null