【发布时间】:2013-12-19 19:19:44
【问题描述】:
我正在编写一些必须读取 utf 8 编码文本文件的代码,并将它们发送到 OpenGL。
还使用了我从该站点下载的库:http://utfcpp.sourceforge.net/
当我写下这个时,我可以在 OpenGL 窗口上显示正确的图像:
std::string somestring = "abcçdefgğh";
// 将字符串转换为 utf32 编码..
// 我也在程序启动时设置了本地。
但是当我从文件中读取 utf8 编码的字符串时:
- 库警告我该字符串没有有效的 utf 编码
- 我无法将“从文件读取”字符串发送到 OpenGL。它崩溃了。
- 但我仍然可以将 std::cout 用于从文件中读取的字符串(看起来正确)。
我使用此代码从文件中读取:
void something(){
std::ifstream ifs("words.xml");
std::string readd;
if(ifs.good()){
while(!ifs.eof()){
std::getline(ifs, readd);
// do something..
}
}
}
现在的问题是:
如果从文件中读取的字符串不正确,当我使用 std::cout 检查它时,它看起来如何?
我该如何解决这个问题?
提前致谢:)
【问题讨论】:
-
您的编译器是否支持 utf8 格式的源文件?您还需要确保您的字符串文字是 utf8,方法是在其前面加上
u8。 -
感谢您的回复:)我使用的是MinGW,源文件是utf8编码的。所以似乎MinGW支持它:)即使我不使用u8前缀它也不会导致问题,因为源是utf 8编码的(或者可能是因为其他原因,它不会出错)。