簡體   English   中英

比較文本文件中的字符串

[英]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 ,因此從未檢查過“ ***”(假設StopStopName不是同一件事)。

找到了我的答案。 我相信這是由於Windows上的換行字符編碼方式所致。

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

我必須使用dos2unix將Windows文本文件轉換為Unix文本文件。 該程序工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM