2012-04-02 7 views
0

その単語の各文字ではなく、単語の文字列をどのように見てみましょうか。私はここに自分のコードを持っていて、o、b、jまたは "。私は文書化hereをチェックしましたが、答えを見つけることができませんでした。ここに私のコードです:string :: :: findを使って単語を探す適切な方法は何ですか?

私もstring::compareを使ってみましたが失敗しました。

+0

は、全体のコードを表示します。すなわち、それは何ですか?また、戻り値は、部分文字列が見つかったかどうかに基づいて真または偽ではありません - ドキュメントをもう一度読んでください。 – Kylotan

+0

あなたはちょうど.substring( "。obj")を使ってみましたか? – gardian06

答えて

8

find関数引数として渡す完全な文字列を検索しません。あなたが誤解しているのは戻り値です。 findは、要求した文字列が見つかったかどうかにかかわらずtrueまたはfalseを返しません。要求された部分文字列を見つけた文字列のインデックスを返します。一致するものが見つからない場合はstd::string::nposを返します。例えばだから

:ブール値0が「真」として扱われる以外の任意の整数として解釈

std::string a = "foobar.obj"; 
std::string b = "baz.obj"; 
std::string c = "qux"; 
std::string d = ".obj"; 

a.find(".obj") == 6 
b.find(".obj") == 3 
c.find(".obj") == std::string::npos // not found 
d.find(".obj") == 0 

- さえ「見つかりません」のstd ::文字列:: NPOの値。それは、あなたが混乱していることは何だと思います。

だからあなたの "if" thenステートメント、代わりの中で:

if (it->find(".obj")) 

あなたがテストになりたい:

if (it->find(".obj") != std::string::npos) 
+0

Ty trevor :)私は今から戻り値を見るように思い出すでしょう –