0

いくつかの簡単なタスクなどは完了しましたが、コーディングに関してはやや初心者です。この小さなプロジェクトに問題があります。forコードにループを実行させ、配列の各要素を検索し、それぞれに含まれる文字を確認したいと考えています。要素が特定の文字と等しい場合、その文字に対応するサウンド ファイルを再生します。

#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm32.lib")
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{    
    string myArray[] = {"a", "b", "c", "d", "e", "f", "g"};
    for(int i = 0; i < (sizeof(myArray)/sizeof(*myArray));i++) {
            if(myArray[i].find("a")) {
            cout << myArray[i] << endl;
            PlaySound("C:\\Users\\victor.leese\\Desktop\\a.wav", NULL, SND_SYNC);

            }     

}
    system("PAUSE");
    return EXIT_SUCCESS;
}

問題は、コードを実行すると、if ステートメントの要素が i で、「a」が出力されず、他の 6 文字が出力され、A サウンド ファイルが何度も再生されることです。私が理解し、動作させたい方法は、最初に「a」を1回だけ出力し、サウンドファイルを1回だけ再生することです。

おそらく本当に簡単な解決策か、私が忘れていた何かがあることに気づきました。ご意見ありがとうございます。

4

1 に答える 1

0

このステートメントを変更

if(myArray[i].find("a")) 

if(myArray[i].find("a") != std::string::npos ) 
于 2013-11-14T23:24:33.890 に答える