首页 > 解决方案 > 如何从 cin 读取直到它为空?

问题描述

我正在尝试从通过 cin 传入的文件中读取成对的行。我需要阅读直到文件为空。如果一对中的一行是空的,我需要将该行保存为“”。如果两行都是空的,那么都需要保存并处理为“”。

我正在使用 getline 读取其中的行,并使用一个 while 循环继续进行,直到两行都为空。但是,我需要它继续直到文件为空,因为有可能 2 个空行后面跟着许多填充行。

这就是我现在的样子:

getline(cin, str1); getline(cin, str2);
while (str1 == "" | str1 != "") {
  ....
  str1 = ""; str2 = "";
  getline(cin, str1); getline(cin, str2);
}

标签: c++

解决方案


如果文件连续包含两个换行符,这将不起作用。您可以使用它cin.eof()来检查何时到达文件末尾。如果它返回 1,那么您试图读取文件末尾之外的内容。


推荐阅读