ダブルクォーテーション入り文字列の比較

[戻る]
hrs [E-Mail] 2003/10/22(水) 01:07:41
ちょっと自前のアプリを作っていたところ、
「<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-
html4/strict.dtd">」
という文字列が書かれているかをチェックする必要があったので、
CStringクラスのCompareで比較しました。


最初は単に「\"」でいけると思っていたのですが、どうも上手くいきませんでした。

「int debug = temp.CompareNoCase("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 
4.01//EN\" \"http://www.w3.org/TR/REC-html4/strict.dtd\">");」
(tempには、上の文字列が入っています)

とやったところ、debug には、2147483647 などの数字が格納されてしまいます。
なんとか比較したいのですが、何か方法はありませんか??

(if文で1文字ずつチェックするような真似はしたくないです)

επιστημη [E-Mail] [HomePage] 2003/10/22(水) 09:07:10
'本当に'その文字列が入っていますか? 試してみたらちゃんと 0 となりましたが。

hrs [E-Mail] 2003/10/22(水) 10:28:55
>'本当に'その文字列が入っていますか?
デバッグ時の、「自動変数」ウィンドウで確認してます。

> 試してみたらちゃんと 0 となりましたが。
0って、temp.CompareNoCaseの返り値ですか?
0にならないから、困っています。

επιστημη [E-Mail] [HomePage] 2003/10/22(水) 10:30:43
>> 試してみたらちゃんと 0 となりましたが。
> 0って、temp.CompareNoCaseの返り値ですか?

うん。

> 0にならないから、困っています。

なんでやろ…

 CString temp = "\"abc\"";
 int debug = temp.CompareNoCase("\"abc\"");

これが 0 を返さぬワケがないのやけど。

hrs [E-Mail] 2003/10/22(水) 10:39:02
> CString temp = "\"abc\"";
> int debug = temp.CompareNoCase("\"abc\"");
は確かに0を返しています。

でもなんでだろう?
ちょっと、じっくり他の部分のバグを探してみます。

FrozenAquarium 2003/10/22(水) 10:47:07
ファイルから文字列を読み込んで
比較してみても
やっぱり0が返ってきますね。

何が違うんでしょうね?

hrs [E-Mail] 2003/10/22(水) 10:47:54
[[解決]]
件の文字列は、外部ファイルから読み込んだものだったんですが、
実は、そのファイルっていうのがUnicodeでした・・・
そのため、0を返さなかったみたいです。

今度は、Shift-JISのファイルを読み込んでやってみたところ、
上手くいくようになりました。
ご迷惑おかけしました。

古いスレッドには追加発言できません。