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

时间:2015-11-29 02:34:10

标签: 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(“”);

注意:可以安全地假设空行包含NO WHITESPACE。

1 个答案:

答案 0 :(得分:1)

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

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;
   }
}

找出ASCII码代表an ASCII code table的内容。这将表明正在阅读的内容。它很可能是回车\r,带有ASCII代码13