0

文字列(単語)からchar(expected_char)を探したい

if (word.find(expected_char)==true)
{
    cout << "You got one! It's on pos" << word.find(expected_char);
}
else
{
...
}

私の文字列が例えば「abcd」で、「c」を検索すると、そうでなければ実行されます。「b」を検索すると、if ステートメントが実行されます。

4

3 に答える 3

5

の戻り値の型std::string::find()は unsigned 型であり、文字が見つからない場合は(表現できる最大値)、または文字列内で見つかった文字の最初のインデックスをstd::string::size_type返します。std::string::nposstd::string::size_type

std::string::find()ここで、 の結果をと比較していますtrue。これにより、ブール値trueが整数値に整数昇格されます1。したがって、文字expected_charが位置 1 にある場合 (つまり、文字列の 2 番目の文字である場合) にのみ、条件が満たされます。

expected_char文字が文字列に含まれているかどうかを確認する場合はword、使用します

if (word.find(expected_char) != std::string::npos)
{
    ...
}
于 2013-02-18T18:02:42.520 に答える
5

これを見て、あなたは理解するでしょう。興味深い部分:

  std::string str("There are two needles in this haystack with needles.");
  std::string str2("needle");

  unsigned found = str.find(str2);
  if (found != std::string::npos)
    std::cout << "first 'needle' found at: " << found << '\n';
于 2013-02-18T18:03:22.627 に答える
4

findnpos位置を返し、一致しない場合は特別な値を返します。テストする必要があります:

word.find(expected_char) != word.npos

(bが位置 1 にあることもあり、これは の整数値でもありtrueます。)

于 2013-02-18T18:02:14.180 に答える