我想将UTF-8文件解析为ustring,我在str中读取此文件。 有一个错误: 在抛出'Glib :: ConvertError'实例后终止调用。 我该怎么办?
char* cs = (char*) malloc(sizeof(char) * str.length());
strcpy(cs, str.c_str());
ustring res;
while (strlen(cs) > 0) {
gunichar ch = g_utf8_get_char(cs);
res.push_back(ch);
cs = g_utf8_next_char(cs);
}
wofstream wout("output");
cout << res << endl;
答案 0 :(得分:1)
这看起来非常错误:
char* cs = (char*) malloc(sizeof(str.c_str()));
因为sizeof(str.c_str())
必然会给你一些像4或8这样的小数字(取决于你机器上指针的大小,str.c_str()
的结果。
当然,它并不重要,因为下一行,你正在泄漏你刚才错误分配的内存:
cs = const_cast<char*> (str.c_str());
我远不相信你需要const_cast<char *>
(这肯定是错误的,因为修改string
内的字符串是未定义的行为。)