C++, вопрос по функции ofstream

Эта функция создает текстовой фаил, а можно ли в с++ до создания присвоить другую кодировку? Автоматом фаил создается в UTF-8 а я хочу что б в ANSI. Так можно сделать?


Ответы (1 шт):

Автор решения: Alxolo

Поток ofstream - не различает кодировок и в него записывается просто то, что Вы пишете. Файл не содержит никаких признаков кодировки. И всё зависит от того как Вы его будете интерпретировать.

Если Вы хотите работать с кодировками, то Вам нужно std::wofstream, std::locale и другие w*stream.

Если в файле только ANSI символы, то файлы в ANSI и UTF-8 не отличаются. Коды символов присутствующих в ANSI совпадают c кодами тех же символов UTF-8. Более того BOM (Byte Ordering Mark) не создаётся и для файлов с UTF-8 содержимым, т. к. порядок байт имеет смысл только при работе с кодировками в которых символ занимает более байта (UTF-16 и пр.).

Так что при работе с fostream Ваш файл просто набор байт без какого либо признака кодировки и всё зависит от того как Вы будете трактовать его содержимое в своём коде.

→ Ссылка