C言語関係掲示板

過去ログ

No.922 全角の文字かどうかを判断するには?

[戻る] [ホームページ]
No.11679

全角の文字かどうかを判断するには?
投稿者---haru(2004/01/12 00:37:13)


テキストファイル保存されている文字列を読み込んだ後、その中身を
一字ずつ全角かどうかを調べたいのですが、どうしたらいいでしょうか?
isalnum関数は半角のA〜Z, a〜z, 0〜9を調べるのには有効ですが、
それ以外の全ての半角文字(例えば、"!"#$%&'()=~|{`*}_?>><")を調べる
はどうやって調べたらいいのでしょうか?

No.11681

Re:全角の文字かどうかを判断するには?
投稿者---RAPT(2004/01/12 00:43:08)


!isalnum
とすれば、否定となるでしょう?

No.11684

Re:全角の文字かどうかを判断するには?
投稿者---haru(2004/01/12 02:31:45)


>!isalnum
>とすれば、否定となるでしょう?

isalnumでは、文字がa-z, A-Z, 0-9かどうかをチェックできますが、
他の小文字(!"#$%&'()=~|`{*+}?><,./;:][@\^-)をそれぞれif文で判定
にかけて、その判定に引っかからない文字を全角文字としていいので
しょうか??
このような消去法的な判定以外に、全角文字かどうかを判定する
関数ってサポートされてないのでしょうか?(開発環境はVisual
C++.NET)
自前で関数を作るにはどうしたらいいのでしょうか??


No.11685

Re:全角の文字かどうかを判断するには?
投稿者---haru(2004/01/12 02:32:47)


> 自前で関数を作るにはどうしたらいいのでしょうか??

自前で、全角文字を判定する関数を作るにはどうしたらいいのでしょう?
です。正しくは。失礼。


No.11687

Re:全角の文字かどうかを判断するには?
投稿者---YuO(2004/01/12 03:10:54)


>isalnumでは、文字がa-z, A-Z, 0-9かどうかをチェックできますが、
>他の小文字(!"#$%&'()=~|`{*+}?><,./;:][@\^-)をそれぞれif文で判定
>にかけて、その判定に引っかからない文字を全角文字としていいので
>しょうか??

標準Cにおいて,全角などという用語自体が存在しません。
標準CはShift_JISやEUC-JPのみを対象としているわけではないです。
まずは「全角文字」なる用語の定義をしてみてください。
#以下,「全角文字」=「WindowsCP932環境におけるJIS X 0208に対応する文字」と読み替えています。

文字のバイト数が欲しいだけであれば,単純にmblen関数で取得できます。


> このような消去法的な判定以外に、全角文字かどうかを判定する
>関数ってサポートされてないのでしょうか?(開発環境はVisual
>C++.NET)

非標準の関数でよければ,_ismbbleadを使うことも可能だと思います。