Какую кодировку использует std :: string.c_str ()? - PullRequest
29 голосов
/ 18 июня 2009

Я пытаюсь преобразовать C ++ 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 кроссплатформенным способом?

Ответы [ 2 ]

41 голосов
/ 18 июня 2009

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

6 голосов
/ 18 июня 2009

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

...