繁体   English   中英

如何输出/输入多字节符号?

[英]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 格式。 output 采用 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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM