環境はXP、VC.NET(MFC)です。
int i = 0;
char W_TEST1[256];
char W_TEST2[256];
strcpy(W_TEST1,"t "); ←tと全角スペースが入ってます。
strcpy(W_TEST2," "); ←全角スペースが入ってます。
*****テストパターン①
i = (int)strspn(W_TEST1," ");←全角スペース
i が 0 となります。
*****テストパターン②
i = (int)strspn(W_TEST2," ");←全角スペース
i が 2 となります。
その為、全角スペースが入っている場合、エラーにすると言う
処理を作っているのですが、テストパターン①の時に、
0となってしまう為、うまくいきません。
何かアドバイスを頂けないでしょうか?
宜しくお願いします。
strspn() は第1引数から第2引数に"含まれない"文字が最初に
現れた位置を返すのですから、0 と 2 になるのが正しいと思います。
全角スペースが入っているかどうかだけを調べたいのでしたら
別の関数を使ったほうがいいと思いまよ。
>全角スペースが入っているかどうかだけを調べたいのでしたら
>別の関数を使ったほうがいいと思いまよ。
その関数を教えて頂けないでしょうか?
全角文字を考慮するならば、_mbsstr で。
>その関数を教えて頂けないでしょうか?
たとえば_mbsstr()
#MFCならCStringにしてFindメソッドの方が楽だと思うけど。。。
全角スペースを検出したいとなるとマルチバイトの問題があるので、
ここは標準の関数ではなくて CString を使って CString::Find()
とかどうでしょう?MFCをお使のようなので CString でもいいですよね?
マルチバイト対応の文字列検索は自分でできないことはもちろん
ないですがかな〜り面倒なので。
すみません、脱字が...
× お使のよう
○ お使いのよう
>strspn() は第1引数から第2引数に"含まれない"文字が最初に
>現れた位置を返すのですから、0 と 2 になるのが正しいと思います。
strspnの使用方法を勘違いしてました。
勉強不足でした。
>ここは標準の関数ではなくて CString を使って CString::Find()
上手くいきました。(こんな便利なものがあるなんて。。。。)
Oksanaさん、Blueさん、subaruさん。
皆様。
お早い回答、本当にありがとうございました。
ツイート | ![]() |