我正在编写一些必须读取utf 8编码文本文件的代码,然后将它们发送到OpenGL。
还使用我从此网站下载的库:http://utfcpp.sourceforge.net/
当我写下这个时,我可以在OpenGL窗口上显示正确的图像:
std::string somestring = "abcçdefgğh";
//将字符串转换为utf32编码..
//我也在程序启动时设置了本地。
但是当我从文件中读取utf8编码的字符串时:
我使用此代码从文件中读取:
void something(){
std::ifstream ifs("words.xml");
std::string readd;
if(ifs.good()){
while(!ifs.eof()){
std::getline(ifs, readd);
// do something..
}
}
}
现在的问题是:
如果从文件中读取的字符串不正确,当我用std :: cout检查它时,它看起来如何?
如何解决此问题?
提前致谢:)
答案 0 :(得分:1)
您编写输出的shell可能对它不理解的字符非常健壮。似乎并非所有使用过的软件都是。但是,验证字节序列是否是有效的UTF-8序列应该相对简单:UTF-8编码相对简单:
根据这些规则,有两件事可能出错并使UTF-8无效:
我没有可以指示出错的地方的代码,但编写此类代码应该相当直接。