Открытие текстовых файлов Unicode в C ++ и отображение их содержимого - PullRequest
2 голосов
/ 13 марта 2011

В настоящее время я пытаюсь открыть текстовый файл, который был сохранен в формате Unicode, скопировать его содержимое в строку wstring, а затем отобразить его на консоли.Поскольку я пытаюсь понять больше о работе со строками и открытии файлов, я экспериментирую с ней в простой программе.Вот источник.

int main()
{
    std::wfstream myfile("C:\\Users\\Jacob\\Documents\\openfiletest.txt");
    if(!myfile.is_open())
    {
        std::cout << "error" << std::endl;
    }
    else
    {
        std::cout << "opened" << std::endl;
    }
    std::wstring mystring;
    myfile >> mystring;
    std::wcout << mystring << std::endl;
    system("PAUSE");
}

Когда я пытаюсь отобразить его на консоли, он отображает ■ ПОЧЕМУ, когда должен отображаться ПОЧЕМУ (на самом деле это «ПОЧЕМУ ВЫ РАБОТАЕТЕ», но я не буду беспокоиться о том, почему он не завершен позжеПохоже).Честно говоря, использование Unicode не очень важно для меня, потому что я не буду продавать эту программу (больше только для себя).Я действительно хочу познакомиться с ним, хотя, потому что в конечном итоге я планирую необходимость знания Unicode в C ++.Я также использую файловую систему boost для работы с каталогами и многопоточности при использовании C ++ / cli для GUI.Мой вопрос (ы): Должен ли я действительно беспокоиться об использовании Unicode, если он мне не нужен в данный момент, Если да, то как мне решить эту проблему, и существуют ли кросс-платформенные библиотеки для работы со строками и файлами, которые используют разныеUnicode-кодировки (окна с UTF-16 и Linux с UTF-32).

Также приветствуются любые статьи по Unicode в C ++ или Unicode в целом.Вот тот, который я нашел, и он мне немного помог. Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Юникоде и наборах символов (без оправданий!)

Спасибо.

РЕДАКТИРОВАТЬ: Вот еще одна статья, которую я только что нашел, которая была полезной Чтение строк UTF-8 с C ++

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

Это знак порядка байтов . Если вы найдете его в начале файла, просто удалите его.

И пробелы между буквами, вероятно, вызваны тем, что консоль не очень удобна для символов.

1 голос
/ 13 марта 2011

Отображает только одно слово, потому что myfile является потоком, а operator>> извлекает из потока только одну строку, отделенную пробелами.Возможно, вы захотите попробовать функцию getline.

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