質問: "orange"){ qDebug() << "correct"; } } file.close(); //return a.exec(); } ```
回答: これはタイトルのような「Qtのsplitについて」ではなく、一般的なC++のプログラミング上の問題ですね。 `for`ループ内の3つの`if`文は`break`や`continue`でスキップしたり、`else if`,`else`でまとめたりしていないため、その回の処理対象に対して全て適用されます。 例えば`apple`や`orange`に対しても、`apple`か, `grape`か`grape`で無いか, `orange`か のチェックがすべて行われます。 そのため、「`grape`で無い」ことになり`qDebug() << "incorrect";`が実行されます。 **何をどうチェック・処理したいのか? を厳密に整理しましょう** 例えば「`grape`で無い」という条件は、別に`glape`,`grepe`,`grapu`等に限らず`apple`や`orange`でも(あるいは`lemon`でも)成立します。 そういう意味で、「`grape`で無いか?」という条件による判定は適切とは言えないでしょう。 どんなデータがあった時にどのように処理を行うか(処理対象あるいは対象外のデータとは何か、対象外データがあった時にどう判定してどう処理するか)といったことを細かく厳密に整理して、それに沿ったプログラミングを行ってください。 **変更の少ないやり方としては?** 以下のようにすれば良いでしょう。 (上記整理で条件が増減したり変わったりしたら、それに合わせて変更します) * `apple`, `grape` , `orange`, **`それ以外`** の4つの場合に分ける(`grape`では無いという判定はやめる) * それぞれの判定を`if`,`else if`,`else`で接続して、どれかが成立したら他の判定は行われないようにする * `grape`が有ったかどうかのフラグ変数を用意して、`for`ループの前にfalseで初期化、`for`ループ内で見つかればtrue設定、`for`ループ終了後にフラグ変数で`grape`有無のチェックを行う