概要
指定した全角文字列を半角文字列に変換する。
コマンドラインで動作します。
使用方法
zen2han 全角文字列
コマンドを実行すると半角文字列が表示されます。
実行例
zen2han "!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}"
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}
ソースコード
UNICODEに対応し、32bit/64bit対応です。
zen2han関数は引数のUNICODE文字列を半角のUNICODE文字列に変換します。
変換対象はUNICODEで文字コードFF01~FF5D(上記の実行例参照)と全角スペースで変換後0021~007Dと半角スペースになります。
上記のコードは縦書き用の文字コードに該当します。
// 全角数字・英字を半角に変換する。Visual C++ 2008 UNICODE
#include <windows.h>
#include <stdio.h>
#include <locale.h>
#include <tchar.h>
TCHAR* zen2han(TCHAR* s){
TCHAR* p=s;
while(*p){
if(0xff01<=*p && *p<=0xff5d){ // 全角数字英字記号の場合
*p-=0xff00-0x20;
}else if(*p==_TEXT(' '))
*p=_T(' ');
++p;
}
return s;
}
void _tmain(int argc,TCHAR** argv){
_tsetlocale(LC_ALL,_TEXT(""));
zen2han(argv[1]);
_putts(argv[1]);
}
ソース・実行ファイル