ダブルクォーテーション入り文字列の比較 – プログラミング – Home

ダブルクォーテーション入り文字列の比較
 
通知
すべてクリア

[解決済] ダブルクォーテーション入り文字列の比較


hrs
 hrs
(@hrs)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

ちょっと自前のアプリを作っていたところ、
「<!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文字ずつチェックするような真似はしたくないです)


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

'本当に'その文字列が入っていますか? 試してみたらちゃんと 0 となりましたが。


返信引用
hrs
 hrs
(@hrs)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

>'本当に'その文字列が入っていますか?
デバッグ時の、「自動変数」ウィンドウで確認してます。

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

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

うん。

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

なんでやろ…

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

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


返信引用
hrs
 hrs
(@hrs)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

> CString temp = \abc\";
> int debug = temp.CompareNoCase(\abc\");
は確かに0を返しています。

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


返信引用
FrozenAquarium
 FrozenAquarium
(@FrozenAquarium)
ゲスト
結合: 22年前
投稿: 22
 

ファイルから文字列を読み込んで
比較してみても
やっぱり0が返ってきますね。

何が違うんでしょうね?


返信引用
hrs
 hrs
(@hrs)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

件の文字列は、外部ファイルから読み込んだものだったんですが、
実は、そのファイルっていうのがUnicodeでした・・・
そのため、0を返さなかったみたいです。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました