Я пытаюсь преобразовать C ++ std::string в UTF-8 или std::wstring без потери информации (рассмотрим строку, содержащую не-ASCII-символы).
std::string
std::wstring
Согласно http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
Если std :: string имеет символы не ASCII, вы должны предоставить функцию, которая преобразует кодировку в UTF-8 [...]
Какую кодировку использует std::string.c_str()? Как я могу преобразовать его в UTF-8 или std::wstring кроссплатформенным способом?
std::string.c_str()
std::string сам по себе не использует кодировку - он вернет байты, которые вы в него вставили. Например, эти байты могут использовать кодировку ISO-8859-1 ... или любую другую, действительно: информации о кодировке просто нет - вы должны знать, откуда байт берутся!
std::string содержит любую последовательность байтов, поэтому кодирование зависит от вас. Вы должны знать, как это закодировано. Однако, если вы не знаете, что это что-то еще, это, вероятно, просто ASCII. В этом случае он уже совместим с UTF-8.