C ++读/写字符大于~50,000

时间:2011-01-29 13:53:21

标签: c++-cli streamreader streamwriter wchar

我有一个程序,基本上写这样的字符

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));

然后让他们只用

输入回程序
String^ fileContent = fileReader->ReadToEnd();

我的问题是当x1 / x2 / x3 / x4有一个大数字的整数值(我不能确定哪个,但我认为它在某个地方,当它超过50,000)时它然后读入字符值65533。

我已经搞砸了StreamReader和StreamWriter编码值,但我首先将它们设置为System :: Text :: Encoding :: Unicode,并且无法理解为什么它不起作用...

我甚至不确定它是不是正确地写了这个符号还是正在阅读它...当我打开它创建的文本文件时,它们对我的PC来说都是不可读的字符......我真的很茫然为了想法。有谁知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

这可能包含在Unicode常见问题解答“What is a surrogate?”中。完全不清楚你实际想要完成什么,但它确实听起来你应该使用FileStream而不是StreamWriter。字节和字符可互换。