dポイントプレゼントキャンペーン実施中!

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

A 回答 (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);
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/12 19:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!