В двух словах: функция WideCharToMultiByte
предоставляет кодировки / кодовые страницы, используемые для преобразования в списке параметров, а wcstombs
- нет. Это основной PITA, поскольку стандарт не определяет , какую кодировку использовать для создания wchar_t
, в то время как вам, как разработчику, безусловно, необходимо знать, в какую кодировку вы конвертируете. 1006 *
Кроме того, WideCharToMultiByte
, конечно, является функцией Windows API и недоступен на любой другой платформе.
Поэтому я бы предложил использовать WideCharToMultiByte
, не задумываясь, если ваше приложение специально не написано для переноса на другие ОС. В противном случае вы можете бороться с wcstombs
или (желательно IMHO) использовать полнофункциональную переносимую библиотеку Unicode, такую как ICU .