Есть ли в C ++ классы потоков байтов и классов символьных потоков? - PullRequest
0 голосов
/ 18 мая 2019

Java имеет классы потока байтов (Stream и его подклассы) и классы потока символов (Reader и Writer и их подклассы).

Есть ли в C ++ классы потоков байтов и классов символьных потоков?

делает http://www.cs.sjsu.edu/~pearce/modules/lectures/oop/streams/streams.htm

Стандартная C ++ Stream Library предоставляет входной поток, выходной поток и классы потока ввода-вывода. Это все ориентированные на персонажа потоки.

означает, что в C ++ есть только классы символьного потока, но нет классов байтового потока?

1 Ответ

2 голосов
/ 18 мая 2019

Помните, что в C ++ каноническим способом представления байта является char, который является целочисленным типом. 1

Стандарт C ++ предоставляет Библиотека ввода / вывода , которая обеспечивает основные потоки ввода и вывода.Эти базовые потоки являются шаблонами, а тип «персонажа», с которым они работают, выбирается с помощью параметра шаблона.Как правило, они используются в ароматах char и «широкий символ» wchar_t. Существуют другие типы символов , такие как char8_t и char32_t, но их использование немного необычно.

Например, ввод и вывод файла в C ++ может быть выполнен с помощью basic_fstream объект, который принимает в качестве параметра шаблона некоторый тип CharT.Для удобства у нас есть два псевдонима: fstream - сокращение для basic_fstream<char> и wfstream - сокращение для basic_fstream<wchar_t>.Этот паттерн также наблюдается в других потоках, таких как строковые потоки и стандартные потоки ввода и вывода.

На первый взгляд может показаться, что "широкий символ" wchar_t отлично подойдет для работы со строками Unicode.Не обманывайтесь.Поддержка Unicode в C ++ серьезно отсутствует .

1.По общему признанию, теперь есть стандарт std::byte, но его использование довольно ограничено.Это ни целочисленный тип, ни тип символов.

Примечание: Не смешивайте cout и wcout в одной программе. Вот почему .

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