Как стандартными способами c++ 11 записать файл в utf-8?

Пользователь

от jazmyne , в категории: C/C++ , 10 месяцев назад

Как стандартными способами c++ 11 записать файл в utf-8?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jaylen.trantow , 10 месяцев назад

@jazmyne 

Для записи файла в формате UTF-8 в C++11 вы можете использовать класс ofstream и функцию std::wstring_convert из заголовочного файла <codecvt>.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include 
#include 
#include 

int main() {
    std::ofstream file("file.txt");
    file.imbue(std::locale(file.getloc(), new std::codecvt_utf8));
    file << L"Пример текста на русском языке" << std::endl;
    file.close();
    return 0;
}


В этом примере мы создаем объект ofstream для записи в файл, затем устанавливаем локаль с помощью функции imbue() и передаем ей объект codecvt_utf8<wchar_t> для преобразования символов wchar_t в UTF-8. Затем мы записываем текст в файл с помощью оператора <<.


Обратите внимание, что вы должны использовать L перед строкой, чтобы указать, что это строка wchar_t.