c++ how to write/read ofstream in unicode / utf8(c ++如何在unicode/utf8中写入/读取ofstream)
问题描述
我有 UTF-8 文本文件,我正在使用简单的方式阅读:
I have UTF-8 text file , that I'm reading using simple :
ifstream in("test.txt");
现在我想创建一个新文件,它将是 UTF-8 编码或 Unicode.我怎样才能用 ofstream
或其他方式做到这一点?这将创建 ansi 编码.
Now I'd like to create a new file that will be UTF-8 encoding or Unicode.
How can I do this with ofstream
or other?
This creates ansi Encoding.
ofstream out(fileName.c_str(), ios::out | ios::app | ios::binary);
推荐答案
好的,关于可移植变体.如果你使用 C++11
标准,这很容易(因为有很多额外的包含,比如 "utf8"
,它永远解决了这个问题).
Ok, about the portable variant. It is easy, if you use the C++11
standard (because there are a lot of additional includes like "utf8"
, which solves this problem forever).
但是如果你想使用具有旧标准的多平台代码,你可以使用这种方法来编写流:
But if you want to use multi-platform code with older standards, you can use this method to write with streams:
- 阅读有关流的 UTF 转换器的文章一个>
- 将
stxutif.h
从上述来源添加到您的项目 以ANSI模式打开文件并将BOM添加到文件的开头,如下所示:
- Read the article about UTF converter for streams
- Add
stxutif.h
to your project from sources above Open the file in ANSI mode and add the BOM to the start of a file, like this:
std::ofstream fs;
fs.open(filepath, std::ios::out|std::ios::binary);
unsigned char smarker[3];
smarker[0] = 0xEF;
smarker[1] = 0xBB;
smarker[2] = 0xBF;
fs << smarker;
fs.close();
然后以 UTF
格式打开文件并在其中写入您的内容:
Then open the file as UTF
and write your content there:
std::wofstream fs;
fs.open(filepath, std::ios::out|std::ios::app);
std::locale utf8_locale(std::locale(), new utf8cvt<false>);
fs.imbue(utf8_locale);
fs << .. // Write anything you want...
这篇关于c ++如何在unicode/utf8中写入/读取ofstream的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:c ++如何在unicode/utf8中写入/读取ofstream
基础教程推荐
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04