[英]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.