0

我想将 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;
4

1 回答 1

1

这看起来非常错误:

char* cs = (char*) malloc(sizeof(str.c_str()));

assizeof(str.c_str())必然会给你一些小的数字,比如 4 或 8(以你机器上指针的大小为准,作为str.c_str().

当然,这并不重要,因为下一行,您正在泄漏您刚刚分配不正确的内存:

cs = const_cast<char*> (str.c_str());

我远不相信您需要const_cast<char *>(这样做肯定是错误的,因为修改 a 中的字符串string是未定义的行为)。

于 2013-07-12T11:25:39.970 回答