在C++17标准中,codecvt_utf16
被弃用了,可以使用std::wstring_convert
作为替代方法来编写UTF-8/16到文件的代码。下面是一个使用std::wstring_convert
的示例代码:
#include
#include
#include
#include
int main() {
// 创建输出文件流
std::ofstream file("output.txt");
// 检查文件是否成功打开
if (!file.is_open()) {
std::cerr << "无法打开文件!" << std::endl;
return 1;
}
// 创建UTF-8到UTF-16的转换器
std::wstring_convert, char16_t> converter;
// 要写入文件的UTF-8字符串
std::string utf8String = u8"你好,世界!";
// 将UTF-8字符串转换为UTF-16
std::u16string utf16String = converter.from_bytes(utf8String);
// 将UTF-16字符串写入文件
file.write(reinterpret_cast(utf16String.c_str()), utf16String.size() * sizeof(char16_t));
// 关闭文件
file.close();
return 0;
}
在上面的示例代码中,我们使用std::wstring_convert
来将UTF-8字符串转换为UTF-16字符串,然后将UTF-16字符串写入文件。请确保编译器支持C++17标准。