[英]Comparing strings from a text file
我正在解析一个文本文件,由于某种原因, string::compare()
无法按预期工作。
文本文件: http : //pastebin.com/raw.php?i=WZDWmb56
读取功能(从while循环内部调用):
string StopName = "***";
bool Person::ReadOnePersonFromFile(ifstream& fin)
{
getline(fin,m_name);
cout << m_name << endl;
if( m_name == StopName )
return false;
fin >> m_id;
fin.ignore(50,'\n');
return true;
}
每当到达"***"
时, if( m_name == StopName )
都不会返回true
。 到底是怎么回事?
此功能在Windows(Visual Studio)上有效。 我目前正在Linux上对此进行编译。 这与文本的存储方式有关吗?
看起来您在代码中比较的是StopName
而不是Stop
,因此从未检查过“ ***”(假设Stop
和StopName
不是同一件事)。
找到了我的答案。 我相信这是由于Windows上的换行字符编码方式所致。
Windows: \r\n (CR + LF)
Linux: \n
Mac: \r
我必须使用dos2unix
将Windows文本文件转换为Unix文本文件。 该程序工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.