'std :: wstring_convert', чтобы преобразовать как можно больше (из utf8-read-chunk)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 'std :: wstring_convert', чтобы преобразовать как можно больше (из utf8-read-chunk)

Сообщение Anonymous »

Я получаю текст из текстового файла UTF-8 и делаю это кусочками для повышения производительности. < /p>

Код: Выделить всё

std::ifstream.read(myChunkBuff_str, myChunkBuff_str.length())


Вот более подробный пример

Я получаю около 16 тысяч символов с каждым куском. < /p>

Я использую следующую функцию для преобразования, взятой отсюда: < /p>

#include
#include
#include

std::string narrow (const std::wstring& wide_string)
{
std::wstring_convert convert;
return convert.to_bytes (wide_string);
}

std::wstring widen (const std::string& utf8_string)
{
std::wstring_convert convert;
return convert.from_bytes (utf8_string);
}
< /code>

Однако в конце чанка может быть отстранен один из русских символов, и преобразование пройдет, с исключением std :: range_error < /code>. < /p>

, например, в UTF-8 ", My Bese Take 15 Chars и" Prrive. Был гипотетически 14, «Т» был бы частично отсутствовать, и преобразование вызовет исключение. («Т» в этом случае) это позволило бы мне преобразовать без него и, возможно, сдвинуть следующий кусок чуть раньше, чем планировался, чтобы включить этот проблемный «Т» в следующий раз? Это также не говорит мне: «сколько персонажа не хватало для преобразования, чтобы на самом деле добиться успеха».>

Подробнее здесь: https://stackoverflow.com/questions/523 ... e-read-chu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»