Ошибка Ustring (во время печати)

Я хочу разобрать файл 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

Решение

Это выглядит очень неправильно:

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 является неопределенным поведением).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]