C++ getline() 跳过空字符串

标签 c++ getline stringstream

我正在阅读我的 C++ 程序 csv 文件:

abc;def;ghi

10;;10

通过这段代码:

    while(getline(in, str, '\n')){
      stringstream ss;
      while(getline(ss, str, ';')){
         line.add(str);
      }
    }

其中 in 是输入文件,str 是字符串变量,line 是我的集合(如 vector)。但是 getline 跳过了 csv 文件中的空字符串。

谁也能帮我读空字符串?

谢谢:)

最佳答案

您从未初始化您的流!

试试这个:

#include <string>   // for std::string and std::getline
#include <sstream>  // for std::istringstream

for (std::string jimbob; std::getline(in, jimbob); )
{
    std::istringstream marysue(jimbob);  // !
    for (std::string charlie; std::getline(marysue, charlie, ';'); )
    {
        line.add(charlie);
    }
}

关于C++ getline() 跳过空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558405/

相关文章:

c++ - 解析 stringstream 迭代内容不起作用

c++ - 对提供核心转储的 ostringstream 对象执行 .str().c_str() 操作

android - QOpenGLWidget 不绘制数组

cout 中的 C++ "Invalid operands to binary expression"

检查 stdin 中读取的行格式为 number^number

c++ - 在 map 内初始化字符串流?

c++ - QT中的QAbstractView是什么(这个语句)?

c++ - 使用 SIGSEGV 初始化类成员应用程序崩溃后

c++ - getline() 的奇怪行为

c++ - cin 和 getline 跳过输入