.NETからのUnicode文字列をネイティブC++に変換して、テキストファイルに書き込もうとしています。次に、プロセスを逆にして、ファイルのテキストを読み取り、管理対象のUnicode文字列に変換します。
私は次のコードを使用します:
String^ FromNativeToDotNet(std::string value)
{
// Convert an ASCII string to a Unicode String
std::wstring wstrTo;
wchar_t *wszTo = new wchar_t[lvalue.length() + 1];
wszTo[lvalue.size()] = L'\0';
MultiByteToWideChar(CP_UTF8, 0, value.c_str(), -1, wszTo, (int)value.length());
wstrTo = wszTo;
delete[] wszTo;
return gcnew String(wstrTo.c_str());
}
std::string FromDotNetToNative(String^ value)
{
// Pass on changes to native part
pin_ptr<const wchar_t> wcValue = SafePtrToStringChars(value);
std::wstring wsValue( wcValue );
// Convert a Unicode string to an ASCII string
std::string strTo;
char *szTo = new char[wsValue.length() + 1];
szTo[wsValue.size()] = '\0';
WideCharToMultiByte(CP_UTF8, 0, wsValue.c_str(), -1, szTo, (int)wsValue.length(), NULL, NULL);
strTo = szTo;
delete[] szTo;
return strTo;
}
たとえば、日本語の文字が2つのASCII文字に変換されるとどうなりますか(漢-> "w)。それは正しいと思いますか?しかし、他の方法は機能しません。FromNativeToDotNetwizh" wを呼び出すと、管理対象として"wのみが取得されます。 unicode文字列...日本語の文字を正しく復元するにはどうすればよいですか?