0

ユーザーに文字列(文)を要求するように言われました。次に、ユーザーは文字列1(文)を検索するために別の文字列を入力するように求められます。プログラムは、2番目の文字列が最初の文字列に表示される回数をカウントする必要があります。エラーは発生していませんが、文字を数えていません。これは私が得る結果です:

文を入力してください:私はスープを食べるのが大好きです

検索する文字列を入力してください:ou

指定した最初の文字列に文字列ouが0個あります。

誰かが私が間違っていることを教えてもらえますか?私はC++の初心者なので、理解するのに苦労しています。

#include <iostream>
#include <string>
using namespace std;

int  main() {

        string sentence;
        string search;
        int count = 0;

        cout<<"Enter a sentence:";
        getline (cin, sentence);
        cout<<"Enter string to search:";
        getline (cin, search);

        cout << "There are " << count << " of the string " << search << " in the first string you provided." <<"\n";

        for (int i=0; i < sentence.size(); ++i)
        {
                if (sentence == search)

                count++;
        }

        return count;


}
4

5 に答える 5

2

2つの問題:

  1. count計算する前に印刷します。
  2. 実際には部分文字列を検索していません。std::stringサブストリングを検索する適切な方法を見つけるには、のドキュメントを参照してください。しかし、あなたは正しい方向に進んでいます。
于 2013-01-31T00:48:06.400 に答える
0

このメソッドの最後にcoutステートメントを配置する必要があるようです。あなたのコードでは、あなたがそれを出力するとき、カウントは常に0であるためです

于 2013-01-31T00:47:31.700 に答える
0

ループを変更して、実際に部分文字列を検索し、それらの出現回数をカウントするようにする必要があります。

string::size_type pos = sentence.find(search);
while (pos != string::npos)
{
    pos = sentence.find(search, pos + search.size());
    count++;
}

また、実際に次の値を計算したポイントのcountにこの行を移動することをお勧めします。

cout << "There are " << count << ...

countそれ以外の場合は、最初に初期化された値(つまり)を明らかに出力します0

于 2013-01-31T00:54:01.203 に答える
0

さて、あなたは結果を計算する前に結果を出力しようとしています。

また、部分文字列検索ではなく完全一致==用です。

于 2013-01-31T00:46:42.367 に答える
0

文字列を検索してカウントを設定するループの後に cout print 行があります。そのループの下に移動します。

于 2013-01-31T00:46:51.907 に答える