C ++ чтение / запись символов больше ~ 50 000 - PullRequest
0 голосов
/ 29 января 2011

У меня есть программа, которая в основном пишет символы вроде этого

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 и не могу понять, почему это не сработает ...

Я даже не уверен, что он пишет символ неправильно или читает его ... Когда я открываю текстовый файл, который он создает, они все нечитаемые символы для моего ПК ... Я действительно в растерянности для идей. Кто-нибудь знает, что я здесь делаю не так?

1 Ответ

2 голосов
/ 29 января 2011

Это, вероятно, описано в FAQ по Юникоду " Что такое суррогат? " Совершенно неясно, чего вы на самом деле пытаетесь достичь, но, похоже, вам следует использовать FileStream, а не StreamWriter.Байты и символы не взаимозаменяемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...