list内の文字を比較するには?

解決


エドモンド  2009-03-24 05:32:39  No: 69858

list内の文字を比較したいと思っております。

list<char> list;

list1.push_back('E');
char mozi = 'E';

char* a = (char*)list1.front();
int hikaku = strcmp(a, (char*)mozi);

上記ソースですが、
char* a = (char*)list1.front();
の箇所でうまくいってないようです。
list内の文字は比較することができないのでしょうか。
よろしくお願いいたします。

環境:
Visual Studio 2005


エドモンド  2009-03-24 05:34:13  No: 69859

ソース2行目、list1はlistの間違いでした。


DD.  2009-03-24 06:17:22  No: 69860

if ( list.front() == mozi ) { ... }
でいけますよ。

ただ、文字操作ならばstd::stringを使用されるほうがよいかと。
std::string s = "E";
char mozi = 'E';

if ( s[0] == mozi ) { ... }
でも問題ありませんし。


エドモンド  2009-03-24 06:24:20  No: 69861

迅速なご回答、ありがとうございました。

CStringであれば、==で比較できると考えていたのですが、
charの場合、文字の比較はstrcmpを使わなければいけないという
固定概念にとらわれていたようです。

本当にありがとうございました。


a  2009-03-24 17:07:03  No: 69862

文字の比較でstrcmpを使ってはいけない。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加