【发布时间】:2014-01-01 21:14:36
【问题描述】:
大家新年快乐!
我有一个如下所示的文本文件:
A|AAAAA|1|2
R|RAAAA
R|RAAAA
A|BBBBB|1|2
R|RBBBB
R|RBBBB
A|CCCCC|1|2
R|RCCCC
以下代码根据key在文件中搜索相关文本,并返回所有属于该key的行:
while( std::getline( ifs, line ) && line.find(search_string) != 0 );
if( line.find(search_string) != 0 )
{
navData = "N/A" ;
}
else{
navData = line + '\n' ; // result initially contains the first line
// now keep reading line by line till we get an empty line or eof
while( std::getline( ifs, line ) && !line.empty() )
{
navData += line + '\n';
}
}
ifs.close();
return navData;
在 Windows 中,我得到了我需要的东西:
A|BBBBB|1|2
R|RBBBB
R|RBBBB
然而,在 Mac 中,代码“&& !line.empty()”似乎被忽略了,因为我得到以下信息:
A|BBBBB|1|2
R|RBBBB
R|RBBBB
A|CCCCC|1|2
R|RCCCC
有人知道为什么吗?
大家干杯!
【问题讨论】:
-
第一个
while之后的;是故意的吗? -
是的。以这种方式工作。干杯,
-
{}会更清楚。我最初错过了;,想知道你为什么在一个陌生的地方重复.find条件:P