c++ - 通过读取文件检测 C++ 中的空行

标签 c++ file parsing if-statement delimiter

我有一个包含以下数据的纯文本文件 (.txt);

data 5

data 7
data 8

我按以下方式读取此文件:

 ifstream myReadFile;
 myReadFile.open(fileName.c_str());

 if (myReadFile.is_open() != true){
    return -1;
 }

string stri;
int i;

while (std::getline(myReadFile,stri)){
  i++;
  if(stri.find("data") != std::string::npos){ //extract data}

  else if(stri.empty()){ cout << "Conditional statement true"; }

  else { cout << "invalid keyword on line: " << i; }
}

我总是收到无效的关键字消息,并且条件语句从不通过。我试过 if (stri == "") 和 (stri.compare("");

注意:可以安全地假设空行不包含空白。

最佳答案

这是一种查找似乎有问题的行的内容的方法。

else {
   cout << "invalid keyword on line: " << i;
   size_t size = stri.size();
   for ( size_t i = 0; i < size; ++i )
   {
     // Print the ASCII code of the character.
     cout << "ASCII code: " << (int)stri[i] << std::endl;
   }
}

an ASCII code table中找出ASCII码代表什么.这将指示正在读入该行的内容。它很可能是回车符 \r,ASCII 代码为 13

关于c++ - 通过读取文件检测 C++ 中的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33978784/

相关文章:

C++ 控制全局对象的析构函数顺序

objective-c 文件大小格式化程序

java - 为什么这个数字解析器不能正确解析 double ?

java - 使用简单的 JSON 解析器 java 访问数组

c++ - 对同一文件中定义的函数的 undefined reference

C++ 重载赋值运算符

c - 为什么 fputc() 会跳过所有其他字符

javascript - 配置 Grails Controller 从服务检索数据后在浏览器中下载文件

java - Jsoup 意外异常,正在工作并突然停止

c++ - 模板推导计算为相同函数的重载