2010-03-04 63 views
1

我已經得到了廣泛的字符串,我正在寫入一個wofstream,我打開了|二進制模式。當我查看結果文件時,它缺少每一個其他字節。爲什麼我的std :: wofstream寫入ansi?

我曾期待當我用二進制編輯器在visual studio中打開文件時,我會將其他所有字節視爲零,但我沒有看到零。

你知道我錯過了什麼嗎?

謝謝。


的代碼是這樣的:

CAtlStringW data = L"some data"; 
wofstream stream("c:\hello.txt", ios_base:out|ios_base:binary); 
stream.write(data.GetBuffer(), data.GetLength()); 
stream.close(); 
+0

你能告訴我們一些代碼請 – Cthutu 2010-03-04 15:15:05

+0

請顯示你的代碼。 – Andrey 2010-03-04 15:15:15

+2

重複http://stackoverflow.com/questions/1509277/why-does-wide-file-stream-in-c-narrow-written-data-by-default – 2010-03-04 15:54:13

回答

0

當你寫使用輸出寬流文件時,實際發生的事情是,它轉換寬字符與其他8位編碼。

如果您使用的是UTF-8語言環境,它會將寬字符串轉換爲UTF-8編碼文本(但MSVC不提供UTF-8語言環境),因此通常會嘗試轉換爲某些代碼頁,如cp1251或ASCII。

相關問題