c++ - 标记字符串流

标签 c++

我需要根据自定义分隔符切割字符串流。当前代码仅根据几个标准分隔符进行切割。如何根据自定义分隔符定义和切割stringstream到字符串行?

std::istringstream input;
input.str("1\n2\n3\n4\n5\n6\n7\n");
int sum = 0;
for (std::string line; std::getline(input, line); ) 
    {
    cout<<line;
    }

最佳答案

如果您想使用一个定界符并且它是单个字符,您可以将它传递给 std::getline() 的 3 参数重载。 :

std::istringstream input;
input.str("1;2;3;4;5;6;7;");
int sum = 0;
for (std::string field; std::getline(input, field, ';'); ) 
    {
    std::cout<<field;
    }

Live example

对于其他情况(多字符定界符、多个定界符),您可能需要考虑使用 Boost.Tokenizer .

关于c++ - 标记字符串流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808379/

相关文章:

c++ - 为什么这个 cin 不能正常工作?

c++ - 为什么这个 noexcept 对性能如此重要,而类似的其他 noexcept 却没有?

java - 如何使用 JNI 从 native C/C++ 代码调用 Java applet 回调函数。

c++ - 当在命令行上指定要打开的文件时,MFC 应用程序在 ProcessShellCommand() 中崩溃

c++ - ponter 和不同大小的整数类型之间的 reinterpret_cast

c++ - 为什么我的运算符重载不能正常工作?

c++ - 如何在 QtCharts 中启用缩放?

c++ - 警告 C4121 行为和结构对齐 (Visual Studio 2010)

c++ - 嵌入 GDB 断点

c++ - 如何修改 QWebView 中的 -webkit-scrollbar 样式