2013-04-18 71 views
1

當使用fstream將這些符號打印到文件時,我會得到一個混亂的結果。 使用:C++ fstream不要打印符號ρ和Δ以正確存檔

file << "Δ" << endl; 

能正常工作在Linux中,但是當我compilled用於Windows它不工作。

是否有一種在Windows中進行此項工作的特定方法?

+0

我不認爲的Windows控制檯支持Unicode字符 –

+0

@TonyTheLion:該OP被寫入文件。 –

+2

你檢查過使用過的編碼嗎?在Linux中,它可能是UTF-8,但在Windows中,如果沒有BOM,它可能會默認爲您的本地代碼頁。 – Caladan

回答

2

以下應該適用於MSVC2010。使用std::codecvt_utf8_utf16隱蔽寬字符爲UTF-8字節流:

#include <fstream> 
#include <codecvt> 
int main() 
{ 
    std::wofstream file("myfile", std::ios::out | std::ios::binary); 
    file.imbue(std::locale(file.getloc(), new std::codecvt_utf8_utf16<wchar_t>)); 

    file << L"Δ" << std::endl; 
} 
+0

我沒有MSVC2010,應該工作的代碼::塊到? – lasvig

+0

@lasvig code :: blocks只是一個IDE,而不是編譯器。這取決於你使用的是哪個編譯器(我猜可能是MinGW與你的代碼::塊下載包裝在一起)。 –

+0

ops,我的意思是mingw32-g ++ – lasvig