如果我在C++中写入一些Unicode字符组成的随机字符串到文件中,我的文本编辑器会告诉我我没有创建一个有效的UTF-8文件。
// Code example
const std::string charset = "abcdefgàèíüŷÀ";
file << random_string(charset); // using std::fstream
我该怎么解决这个问题?我需要做很多额外的手动编码吗?我的理解是,std::string不关心编码,只关心字节,所以当我传递一个unicode字符串并将其写入文件时,那个文件应该包含相同的字节,并被识别为UTF-8编码的文件,对吗?
std::string
并不一定会从字符串字面量中丢弃空字符。通常,它内部将字符串表示为以空字符结尾的C字符串,以便轻松实现std::string::c_str()
函数。 - Charles Salvia