2

文字列内の部分文字列の位置の数を見つけるのに苦労しています。以下のコードは、文字列内の部分文字列の開始位置のみを提供します。私を助けてください。

void Search(std::string SubString, vector<string> index)
{
    vector<string>::const_iterator cii;
    string temp;
    bool found = false;
    unsigned find = 0;
    for(cii = index.begin(); cii != index.end(); cii++)
    {
        temp = *cii;
        find = temp.find(SubString);
        if(find != std::string::npos)//running.find()
        {
            cout << find << endl;
            cout << *cii << endl;
            found = true;
        }
        else
        {
            if((cii == index.end()) && found)
            {
                cout << "Not found\n";
                found = false;
            }
        }
    }
}

int main()
{
    vector<string> index;
    ifstream myReadFile;
    string str, running;
    myReadFile.open("example.txt");
    char output[100];
    if (myReadFile.is_open()) 
    {
        while (!myReadFile.eof()) 
        {
            while( std::getline( myReadFile, str ) ) 
            {

                index.push_back(str);
            }
        }
    }

    while(running != "END")
    {
        cout << "To Quit type:- END\n";
        cin >> running;
        if(running == "END")
        {break;}
        else
        {
            Search(running, index);
        }

    }

    myReadFile.close();
    return 0;
}
4

2 に答える 2

0

最後に私はそれをしました。私は自分のSearch()機能に小さな変更を加えました。以下のコードを見つけてください。

void Search(std::string SubString, vector<string> index)
{
    vector<string>::const_iterator cii;
    string temp;
    bool found = false;
    unsigned find = 0;
    static int n = 0;
    for(cii = index.begin(); cii != index.end(); cii++)
    {
        temp = *cii;
        std::string ::size_type pos = 0;
        while( (pos = temp.find( SubString, pos )) 
                 != std::string::npos ) 
        {
            n++;
            pos += SubString.size();
            cout << pos << " ";
        }
        if(n)
        {
        cout << " \n ";
        cout << *cii << endl;
        found = true;
        }
        else
        {
            if((cii == index.end() - 1) && !found)
            {
                cout << "Not found\n";
                found = false;
            }
        }
        n = 0;
    }

}
于 2013-04-10T13:08:01.317 に答える