2011-06-21 23 views
0

If文の条件にループがあるかどうかを知りたいだけですか?IF文の条件内のループ

サンプル:

if((string.contains(stringlist.hello().value(0),Qt::CaseInsensitive))||(string.contains(stringlist.hello().value(1),Qt::CaseInsensitive))||(string.contains(stringlist.hello().value(2),Qt::CaseInsensitive))) 
{ 
... 
} 

すべき:

if 
(
for(int i=0; i < stringlist.hello().size(); i++) 
{ 
string.contains(stringlist.hello().value(i),Qt::CaseInsensitive) 
} 
) 
{ 
... 
} 

方法ハロー()関数によって、データベースからデータのリストを取得します。 このプログラムの目的は、データベースからいくつかのキーワードが含まれている場合に文字列をチェックすることです。

+3

これが有効な構文であっても、読みにくいために悪い考えです。これは何のための関数なのですか...ループを実行する関数を作成し、それを意味のある名前にして、それを 'if'の述語として呼び出します。 – Nemo

+0

しばらく間隔を空けておくと、読みやすくなります –

+0

tnxの提案について –

答えて

7

そのコードはコンパイルされません。代わりに、あなたはそれぞれの状態をチェックし、条件が満たされているか否かを判定し、変数に結果を格納するソリューションを試してみてください:

bool testCond = false; 
for(int i=0; i < stringlist.hello().size(); i++) 
{ 
    if (string.contains(stringlist.hello().value(i),Qt::CaseInsensitive)) 
    { 
     testCond = true; 
     break; 
    } 
} 
if (testCond) 
{ 
    // code here if any of the conditions in the for loop are true 
} 

それはあなたのように見えるように私は、ブール値の代わりに、int型のを使用するように私のコードを変更しましたC++を使用しています。

+0

病気でこのコードを試してみてください。 –

+0

tnxあなたのコードが動作します.. XD –

+1

'test' =' true;の後に時間を無駄にしないように、最初の 'if'に' break'を入れるかもしれません。 あるいは 'for 'condition to'!testCond && i karadoc