• ベストアンサー

全角半角変換 C++/CLI

C++/CLI(VC++2008) で (1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか (2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか  

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1. VBのStrConvを使う。 #using "Microsoft.VisualBasic.dll" using namespace Microsoft::VisualBasic; String^ s1 = L"東京bay"; // 全角文字へ String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0); // 半角文字へ String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0); 2. Win32 API LCMapStringを使う。 #include "windows.h" #include "vcclr.h" #pragma comment(lib, "kernel32.lib") String^ s1 = L"東京bay"; pin_ptr<const wchar_t> p1 = PtrToStringChars(s1); array<wchar_t>^ b2 = gcnew array<wchar_t>(s1->Length + 1); pin_ptr<wchar_t> p2 = &b2[0]; ::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, p1, -1, p2, b2->Length); String^ s2 = gcnew String(p2); array<wchar_t>^ b3 = gcnew array<wchar_t>(s1->Length + 1); pin_ptr<wchar_t> p3 = &b3[0]; ::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, p2, -1, p3, b3->Length); String^ s3 = gcnew String(p3);

kanokawa
質問者

お礼

bluecampusさん VBのStrConvを使う方法も Win32 API LCMapStringを使う方法も なんの滞りもなくすべてうまくいきました VBやAPIの資産がC++/CLIから使えるとは夢にも思いませんでした 驚きと感動です StrConvはEXCELで使ったことありますがAPIの方はこれから勉強します 懇切丁寧なご教示本当に本当にありがとうございました

すると、全ての回答が全文表示されます。

関連するQ&A