C++ 检测C+中的空行+;从读取文件

C++ 检测C+中的空行+;从读取文件,c++,file,parsing,if-statement,delimiter,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.

我有一个包含以下数据的纯文本文件(.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; }
}
ifstream-myReadFile;
打开(fileName.c_str());
if(myReadFile.is_open()!=true){
返回-1;
}
弦纹;
int i;
while(std::getline(myReadFile,stri)){
i++;
if(stri.find(“data”)!=std::string::npos){//extract data}

else if(stri.empty()){cout这里有一种方法可以找到似乎有问题的行的内容

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

是的,我得到了一个13 ASCII码。我尝试了if(stri==“\r”)现在我的问题似乎已经解决了,然而,另一个小问题突然出现在我的脑海中。这对在UNIX和DOS中创建的文件都有效吗?如果不行,我应该做什么调整?@HaniAl shafei,如果文件是在Windows中创建的,你必须转换为UNIX样式的行尾,反之亦然。当我遇到这样的文件时,我会使用两个ut可移植程序-
dos2unix
unix2dos
。它们通常安装在cygwin中。它们可能也可以在Linux桌面上使用。