質問させてください。

charの配列の中に、全角半角の英字数字漢字からなる文字列
char str{30] ="あ1いa2うA";

があったとき、この文字列の中から、
「全角半角英数字を取り出し、すべて半角英数字」にしたい
#上記の例であったとき取り出したい文字列は、"1a2A"です。

チェックする文字列が、半角のみや全角のみであれば
文字コードで見れそうなのですが、
半角と全角がランダムに混じっている文字列をチェックする方法がわかりません。

そのようなことができるメソッドなどあれば、ご教授ください。