正在比较文本文件中的字符串

Comparing strings from a text file

本文关键字:字符串 文件 文本 比较      更新时间:2023-10-16

我正在解析一个文本文件,由于某些原因string::compare()无法按预期工作。

文本文件:http://pastebin.com/raw.php?i=WZDWmb56

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

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,因此永远不会检查"***"(假设StopStopName不是一回事)。

找到了我的答案。我相信这是因为换行符在Windows上的编码方式。

 Windows: rn  (CR + LF)
 Linux: n 
 Mac: r

我不得不用dos2unix将我的Windows文本文件转换为Unix文本文件。这个程序运行良好。