Вот мой код:
http://pastebin.com/RbFYCydf
Возникли проблемы с выводом, пытаясь заставить его выглядеть так:
Там, где тротуар заканчивается Шел Сильверстейн 7 Есть место, где кончается тротуар 8 И до того, как начинается улица, 5 И там трава становится мягкой и белой, 8 И там солнце горит темно-красным, 7 И там отдыхает лунная птица от его полета 8 Остудить на ветру мяты перечной. 6 Давайте оставим это место, где дым становится черным 10 И темная улица извивается и изгибается. 7 За ямами, где растут цветы асфальта. 8 Мы пойдем с размеренной и медленной прогулкой. 11 И посмотрим, куда идут мелко-белые стрелки. 7 К месту, где заканчивается тротуар. 7 Да, мы будем идти с размеренной и медленной прогулкой, 11 И мы пойдем туда, куда идут мелко-белые стрелки, 8 Для детей, которые они отмечают, и для детей, они знают, 10 Место, где заканчивается тротуар. , 6
Общее количество слов 134
Есть лучший способ, чем возиться с peek
:
Сначала прочитайте всю строку, используя getline
,
Поместите эту строку в istringstream
,
Подсчитайте слова в этом потоке.
Повторение.
Детали реализации оставлены в качестве упражнения.
Я дам вам хитрый способ сделать это должно работать очень хорошо.
string s = "this is simple test"; //assume that this is the line to be calculated
int i=0,ans=0;
while (s.find(' ',i+1)!=-1){
i = s.find(' ',i+1);
ans++;
}
cout<<++ans<<" ";