gpt4 book ai didi

c++ - Ustring 错误(打印期间)

转载 作者:行者123 更新时间:2023-11-28 07:31:21 25 4
gpt4 key购买 nike

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

最佳答案

这看起来很不对:

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 中的字符串是未定义的行为)。

关于c++ - Ustring 错误(打印期间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com