如何output/Input多字节符号?

How to output/Input multibyte symbols?

经过大量搜索后,我开始使用那个奇怪的代码:

ofstream myfile;
    string chars =  "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    myfile.open ("alphabet.txt");
    for (int i = 0; i < 66; i+=2) {
        myfile << chars[i] <<chars[i+1] << "\n";
    }
    myfile.close();

但是真的没有办法从std::string中得到一个宽字符吗?

这在我的机器上有效。我的源代码文件是 UTF-8 格式的。该字符串采用 UTF-16 格式。输出为 UTF-16LE。

随着时间的推移,C++ 在处理 Unicode 字符串方面取得了一些进步,但仍有很大的改进空间。

#include <fstream>
#include <string>

using std::ofstream;
using std::string;

int main() {
    auto chars = u"абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    auto myfile = ofstream("alphabet.txt");
    for (char16_t const* p = chars; *p; ++p) {
        auto c = *p;
        auto cc = reinterpret_cast<char const*>(&c);
        myfile.write(cc, sizeof c);
    }
    myfile.close();
}