在用户输入期间停止在空白行(C ++)

时间:2011-10-03 23:27:11

标签: c++

我有一个文件,我需要在命令行使用cin和重定向进行解析。第一个然而很多行由两个双字和两个字符串组成,然后是一个空白行,然后是更多信息。我需要停止读取此空行处的数据并切换到不同的变量,因为在此之后数据的格式将不同。如何在不丢失任何数据的情况下检测带有cin的空行?谢谢你的帮助...

2 个答案:

答案 0 :(得分:6)

解析它就像解析任何文件一样,只记录空行发生的时间:

#include <sstream>
#include <fstream>
#include <string>

int main()
{
  std::ifstream infile("thefile.txt", "rb");
  std::string line;

  while (std::getline(infile, line)) // or std::cin instead of infile
  {
    if (line == "") { break; }  // this is the exit condition: an empty line

    double d1, d2;
    std::string s1, s2;
    std::istringstream ss(line);

    if (!(ss >> d1 >> d2 >> s1 >> s2)) { /* error */ }

    // process d1, d2, s1, s2
  }

  // move on

}

答案 1 :(得分:2)

我建议使用getline(检测空行)和stringstream(用于解析)的组合。当我今天下班回家时,我可以通过一个工作实例进一步扩展这一点。