Я составил программу для школы; который проходит через обычный текстовый файл и создает соответствие для каждого слова. Он возьмет каждое слово, удалит неалфавитные символы спереди и сзади и поместит его в двоичное дерево поиска. При обнаружении в тексте символов Юникода вы получаете случайные символы ascii, составляющие многобайтовый символ, а не то, чем он является: например, «yarns—and» выводится как «yarnsùand». Я потратил несколько часов несколько месяцев назад и на этой неделе, пытаясь решить эту проблему, и что мне делать?
https://www.codeproject.com/Articles/38 ... ding-UTF-8 -with-C-streams#mozTocId353176 Эта статья показалась полезной. Но невозможность чтения в utf-8 — решаемая проблема, поэтому создание фасета не показалось полезным. Из-за этого я не пробовал.
Вот MRE ошибки.
#include
#include
#include
#include
#include
using namespace std;
int main()
{
wfstream file;
file.open("Example.txt", ios::in);
// Changes buffer from char to wchar_t
wchar_t* buffer = new wchar_t[100];
file.rdbuf()->pubsetbuf(buffer, 100);
wchar_t CurrentStreamCharacter = file.get();
wstring NewWord = L"";
while (file)
{
NewWord.push_back(CurrentStreamCharacter);
CurrentStreamCharacter = file.get();
}
//SetConsoleOutputCP(65001);
wcout
Подробнее здесь: https://stackoverflow.com/questions/786 ... characters
Visual Studio не может выводить символы Юникода ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение