C++ 检测C+中的空行+;从读取文件
我有一个包含以下数据的纯文本文件(.txt)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.
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桌面上使用。