簡體   English   中英

Windows和Mac OS中的C ++字符串比較

[英]C++ string compare in Windows and Mac OS

當我在Windows計算機上運行此代碼時,它將打印緩沖區。 但是,對於Mac OS,它不會從getline中打印緩沖區。 我不知道為什么會這樣。 Mac OS使用gcc 4.2.1,Windows使用MinGw 4.8.1。

#include <iostream>
#include <fstream>
using namespace std;

int main() {
const char *filename = "inputfile.txt";
string buffer;
ifstream infile(filename);

while(infile.good())
{
    getline(infile,buffer);
    if(buffer == "[Modal]")
        cout << "[Modal] Found!" << endl;
}

return 0;
}

如果您在Windows上創建了文件,然后將其移至Mac OS,它將具有Windows行尾。

Windows有點奇怪-在Windows創建的文本文件中,行以“ \\ r \\ n”結尾。 當您閱讀文件時,通常會將其翻譯回“ \\ n”。 Mac OS不會執行此轉換,因此緩沖區實際上將包含“ [Modal] \\ r”。

dos2unix是一個命令行程序,如果您要這樣做,它可以為您進行翻譯。

我認為問題是在Mac OS中找不到該文件。

更改這些陳述

while(infile.good())
{
    getline(infile,buffer);
    if(buffer == "[Modal]")
        cout << buffer << endl;
}

if ( infile )
{
    while( getline(infile,buffer) )
    {
        if(buffer == "[Modal]")
        cout << buffer << endl;
    }
}
else
{
    cout << "File open error" << endl;
}

暫無
暫無

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

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