Мне нужно преобразовать имена файлов из System.String
в std::string
. Я использую имена файлов на японском и английском языках sh.
Для имен файлов на английском языке sh проблем нет.
Только имена файлов на японском языке не преобразуются в std::string
в Engli sh Windows 10.
Я использовал WideCharToMultiByte()
и кодовую страницу 932.
std::string marshal_as(System::String^ str)
{
std::string convertedstring;
size_t _size = 0;
cli::pin_ptr<const wchar_t> _pinned_ptr = PtrToStringChars(str);
_size = WideCharToMultiByte(932, 0, _pinned_ptr, str->Length, 0, 0, 0, 0);
if (_size > 0)
{
convertedstring.resize(_size);
char* buffer = &convertedstring[0];
WideCharToMultiByte(932, 0, _pinned_ptr, -1, &buffer[0], _size, 0, 0);
}
return convertedstring;
}
Здесь str
это "C:\\files\\ブ種別.pdf"
convertedstring
is "C:\\files\\ƒuŽí•Ê.pdf"
Может ли кто-нибудь помочь мне решить эту проблему?