文字列を反復処理する必要はありません。これはすでにfind
です。これは、デフォルトでは最初から検索を開始しますので、我々はスペースを見つけたら、私たちはこの発見スペースから次の検索を開始する必要があります。これは、スペースを開始するか、末尾の重複のスペースを、処理しないもちろん
std::vector<std::string> words;
//find first space
size_t start = 0, end = sen.find(' ');
//as long as there are spaces
while(end != std::string::npos)
{
//get word
words.push_back(sen.substr(start, end-start));
//search next space (of course only after already found space)
start = end + 1;
end = sen.find(' ', start);
}
//last word
words.push_back(sen.substr(start));
その他の特別な場合。あなたが実際にstringstreamを使用したほうが良いでしょう:
for(std::vector<std::string>::const_iterator iter=
words.begin(); iter!=words.end(); ++iter)
std::cout << "found word: " << *iter << '\n';
として、変数名として 'new'を使用しないでください。既に他の言語のために使用されています。 – Asaf
ああ、予約語です。そうですか。ありがとうございました! –
@CandaceParker:あなたの機能に間違いがないか教えてください。それはコンパイルされませんか?それはクラッシュしますか?悪い結果をもたらしますか? –