Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较文本文件中的字符串_C++_Linux_Text - Fatal编程技术网

C++ 比较文本文件中的字符串

C++ 比较文本文件中的字符串,c++,linux,text,C++,Linux,Text,我正在分析一个文本文件,由于某种原因,string::compare()无法正常工作 文本文件: 读取函数(从while循环内部调用): string StopName=“***”; bool Person::ReadOnePersonFromFile(ifstream&fin) { getline(财务、管理单位名称); 无法识别; 忽略(50,“\n”); 返回true; } 无论何时到达“***”,if(m_name==StopName)都不会返回true。发生了什么事 此函数适用于Wi

我正在分析一个文本文件,由于某种原因,
string::compare()
无法正常工作

文本文件:

读取函数(从while循环内部调用):

string StopName=“***”;
bool Person::ReadOnePersonFromFile(ifstream&fin)
{
getline(财务、管理单位名称);
无法识别;
忽略(50,“\n”);
返回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文本文件。程序运行良好

哎呀,那是一个c/p错误。应该是
StopName
 Windows: \r\n  (CR + LF)
 Linux: \n 
 Mac: \r