Существует ли в C ++ эквивалент функций типа mbsrtowcs и wcsrtombs, использующий функции std :: locale и потоков C ++?
Я пытаюсь найти лучший способ преобразования между std :: string и std :: wstring, используя стандартную библиотеку. Кажется, что std :: locale почти может это сделать, но я немного сомневаюсь в некоторых деталях или в том, какие ограничения у него могут быть.
Некоторые особенности: я использую Linux, который использует utf-8 в качестве собственной кодировки. Я хотел бы перейти от utf-8 std :: string к std :: wstring и обратно без потери информации.
Я думаю, что в Windows могут быть некоторые ограничения для локалей, но меня это не особо беспокоит. Пока ответ работает в Linux и не имеет никаких зависимостей, кроме libstdc ++, то есть никакой зависимости от ускорения, я счастлив.
Ссылки на справочную информацию приветствуются.
ПРИМЕЧАНИЕ. Кажется, есть некоторая путаница. Более одного символа могут представлять один символ в UTF-8, поэтому функции, которые не учитывают это при преобразовании из wchar_t в char, не будут работать.