Я пытаюсь записать символы Unicode в файл с std::wofstream
, но функция put
или write
не записывает никаких символов.
Пример кода:
#include <fstream>
#include <iostream>
int main()
{
std::wofstream file;
file.open("output.txt", std::ios::app);
if (file.is_open())
{
wchar_t test = L'й';
const wchar_t* str = L"фывдлао";
file.put(test);
file.write(str, sizeof(str));
file.close();
}
else
{
std::wcerr << L"Failed to open file" << std::endl;
}
std::cin.get();
return 0;
}
output.txt
файл пуст, после выполнения кода wchar / строка не записывается, почему?что я делаю не так?
РЕДАКТИРОВАТЬ: Код исправления:
#include <fstream>
#include <iostream>
int main()
{
std::wofstream file;
file.open("output.txt", std::ios::app);
if (file.is_open())
{
wchar_t test = L'й';
const wchar_t* str = L"фывдлао";
file.put(test);
if (!file.good())
{
std::wcerr << L"Failed to write" << std::endl;
}
file.write(str, 8);
file.close();
}
else
{
std::wcerr << L"Failed to open file" << std::endl;
}
std::cin.get();
return 0;
}
После применения исправления кода я получил Failed to write
, но я все еще непонять, что мне нужно сделать, чтобы написать широкие строки и символы?