0

我有一个程序基本上可以写出这样的字符

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 并且不明白为什么这不起作用......

我什至不确定它是错误地写入符号还是读取它......当我打开它创建的文本文件时,它们对于我的电脑来说都是不可读的字符......我真的很茫然。有谁知道我在这里做错了什么?

4

1 回答 1

2

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

于 2011-01-29T14:25:32.250 回答