2011-01-29 70 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