Запись символов Unicode в OStream - PullRequest
5 голосов
/ 19 июля 2010

Я работаю с юникодом / широкими символами и пытаюсь создать метод toString ( Java :: toString эквивалент ). Будет ли ostream обрабатывать широкие символы, если так, есть ли способ предупредить потребителя потока о том, что из него выходит Unicode?

1 Ответ

3 голосов
/ 19 июля 2010

Ни ostream, ни остальная часть C ++ ничего не знают о Юникоде.Обычно вы пишете строковое преобразование в C ++ следующим образом:

template<typename Char, typename Traits>
std::basic_ostream<Char, Traits>&
operator<<(std::basic_ostream<Char, Traits>& stream, const YourType& object) {
    return stream << object.a << object.b;  // or whatever
}

Получаете ли вы что-то подобное Unicode, зависит от реализации.Потоки в C ++ никогда не являются текстовыми потоками в смысле Java, а строки C ++ не являются строками в смысле Java.Если вам нужна настоящая строка Unicode, вы можете взглянуть на библиотеку ICU .

...