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