当我从文件中读取时,我想要检测空行。我尝试了line.empty()
和line.size()==0
以及line==""
,但这些都不适用于我。
有什么建议吗?
void readFile(const string & fn){
ifstream fichier;
string line;
try{
fichier.open(fn.c_str(),ifstream::in);
while(getline(fichier,line))
{
if(line.empty())// i tried also line=="" and line.size()==0
{
cout<<"empty line!!"<<endl;
}
else{
cout<<"Line:"<<line<<endl;
}
}
fichier.close();
}catch(const string & msg){
if(fichier.is_open()) fichier.close();
cout<<"Error !!";
}
}
答案 0 :(得分:0)
您可以这样做:
string buffer;
getline(fichier, buffer, '\n);
if(isEmpty(buffer)){
//do whatever
}
如果您确定您的行是完全空的(即没有空格,制表符或非文本字符,那么您的isEmpty函数可能类似于
return buffer=="";
如果它更复杂,并且你的新行可以包含像\ t这样的字符,你可以这样做:
bool isEmpty(string buffer){
for (int i = 0; i<buffer.length(); i++{
if (buffer[i] != '\t') //add chars you want to exempt here
return false;
}
return true;
}