-2

これは、部分文字列として sub を含むすべての word1 引数を持つベクトルを返すことになっていますが、「line 779 vector subscript out of range」というエラーが表示され続けます

vector<string> search(int num1, string sub, string word1 ...)
{
    va_list arguments;
    string pword = "";
    pword.assign(word1);
    vector<std::string> vec;
    vec.push_back(sub);
    vec[0] = sub;
    va_start(arguments, word1);
    for (int i = 1; i <= num1; i++)
    {
        for(int x = 0; x < pword.length(); x++)
        {
            for(int y = 0; y < sub.length(); y++)
            {
                if(y+x < pword.length())
                {
                    if(pword[y+x] == sub[y])
                        continue;
                    else
                        break;
                }
                else 
                    break;
                vec.push_back(pword);
            }
        }
        pword = va_arg(arguments, string);
    }       
    va_end(arguments);
    return vec;
}
4

2 に答える 2

0

関数プロトタイプを次のように変更します。

vector <string> search (string sub, const vector <string> & words)

その後、物事は非常にうまく収まるはずです。結果を設定して空にしvector <string>ます。部分文字列を見つけながら、単語を反復処理します。見つかったら、その単語を結果にプッシュします。

結果を返します (常に)。

于 2013-10-10T00:11:26.623 に答える