プログラムの内容というのは、string型の文字列 "takeshikita"から'a'という文字が何番目に並んでいるかというのを求めたいというものです。
この例でしたら、正解は2番目と11番目ですよね。
ここで、以下のプログラムを見てください。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char **argv){
int n;
string str;
str = "takeshikita";
while ((n = str.find("a")) != str.npos){
cout << n << endl;
}
return 0;
}
確かに、このままだと2番目の'a'だけが無限ループで検出されるだけです。
ですので、2番目の'a'が検出されたら次の'a'が検出されるようにしたいのですが、find関数を使ってそのようなことは可能でしょうか?
それと、文字列の最後尾にきたら検出操作を停止させたいのですが、それはwhileの条件式
(n = str.find("a")) != str.npos
で合っていますでしょうか?
どなたかご教授下さいませ。