2011-01-29 72 views
0

我有一個程序,基本上只用C++讀取/寫入字符大於〜50000

String^ fileContent = fileReader->ReadToEnd(); 

寫字符這樣

wchar_t c[5] = {static_cast<wchar_t>(x1), static_cast<wchar_t>(x2), static_cast<wchar_t>(x3), static_cast<wchar_t>(x4)}; 
fileWriter->Write(msclr::interop::marshal_as<String^>(c)); 

再後來有它們輸入回程序我的問題是當x1/x2/x3/x4有一個大數的整數值(我不能確定它是哪一個,但我認爲它在某個地方,當它超過50,000)時,它會讀取字符的值65533.

我已經搞砸了StreamReader和StreamWriter編碼值,但是我首先將它們設置爲System :: Text :: Encoding :: Unicode,並且無法看到爲什麼不起作用...

I我甚至不確定它是不是正確地編寫了符號或者正在閱讀它......當我打開它創建的文本文件時,它們對我的電腦來說都是不可讀的字符......我真的對創意感到不知所措。有誰知道我在這裏做錯了嗎?

回答

2

這可能是由Unicode常見問題解答「What is a surrogate?」所涵蓋的。你完全不清楚你實際上想要完成什麼,但它肯定聽起來像你應該使用FileStream而不是StreamWriter。字節和字符是而不是可互換。

+0

對不起,這是一個相當大的程序,我不能給很多上下文而不去掉主題 - 但是文件的輸入/輸出在完全不同的時間被調用,所以我不認爲我想要一個FileStream。我認爲你的鏈接確實解釋了它......儘管我能看到它的意思是我無法做我想做的事:( – 2011-01-29 19:22:59