【问题标题】:C++ Read/Write characters bigger than ~50,000C++ 读/写大于 ~50,000 个字符
【发布时间】:2011-06-17 18:09:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++-cli streamreader streamwriter wchar


    【解决方案1】:

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

    【讨论】:

    • 是的,很抱歉,这是一个相当大的程序,如果不偏离主题,我无法提供太多上下文 - 但是文件的输入/输出在完全不同的时间被调用,所以我不认为我想要一个文件流。而且我认为您的链接确实解释了它...尽管我只能看到这意味着我无法做我想做的事情:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2020-03-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多