Подтвердить что ты не робот

Какая кодировка использует std::string.c_str()?

Я пытаюсь преобразовать С++ std::string в UTF-8 или std::wstring без потери информации (рассмотрим строку, содержащую символы, отличные от ASCII).

Согласно http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:

Если std::string имеет символы, отличные от ASCII, вы должны предоставить функцию, которая преобразует вашу кодировку в UTF-8 [...]

Какую кодировку использует std::string.c_str()? Как преобразовать его в UTF-8 или std::wstring кросс-платформенным способом?

4b9b3361

Ответ 1

std::string сам по себе не использует кодировку - он вернет байты, которые вы вложили в него. Например, эти байты могут использовать кодировку ISO-8859-1... или любую другую, на самом деле: информация о кодировке просто отсутствует - вы должны знать, откуда берутся байты!

Ответ 2

std::string содержит любую последовательность байтов, поэтому кодирование зависит от вас. Вы должны знать, как он закодирован. Однако, если вы не знаете, что это что-то другое, возможно, это просто ASCII. В этом случае он уже совместим с UTF-8.