比较文本文件中的字符串

时间:2014-10-01 05:56:48

标签: c++ linux text

我正在解析文本文件,由于某种原因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上编译它。这与文本的存储方式有什么关系吗?

2 个答案:

答案 0 :(得分:0)

您似乎在代码中比较StopName而不是Stop,因此&#34; ***&#34;还没有检查过(假设StopStopName不是同一件事)。

答案 1 :(得分:0)

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

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

我必须将我的Windows文本文件转换为带有dos2unix的Unix文本文件。该程序工作正常。