Посчитать количество слов в строке

197
11 мая 2019, 20:40
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
 int main()
{
string name,temp,result;
int words=0,size;
cout << "Enter a word:";
cin >> name;
size = name.size();
for (int i = 0; i < size; i++) {
    if (name[i] == ' ') {
        words += 1;
    }
}
cout << words;
}

Почему данный код не определяет количество слов? С другими символами работает, а с пробелом никак не хочет

Answer 1

Дело в том, что

cin >> name;

считывает только одно слово, до пробела.

Воспользуйтесь для чтения строки getline.

Answer 2

Подсчет слов это классика жанра (один из примеров в K&R)

#include <stdio.h>
#include <string.h>
size_t
count_words (const char *str, const char *delim)
{
  int in_word = 0, c;
  size_t cnt = 0;
  while (c = *str++) {
    if (strchr(delim, c)) {
      if (in_word) 
    in_word = 0;
    } else {
      if (!in_word) {
    in_word = 1;
    cnt++;
      }
    }
  }
  return cnt;
}
READ ALSO
UDP-приёмник сообщений на C++ Qt или Python PyQt

UDP-приёмник сообщений на C++ Qt или Python PyQt

Необходимо разработать UDP-приёмник, принимающий строку данных от сервера на другом ПК, и помещающий специнформацию в окно в соответствии...

174
Как вывести время на компьютере в c++?

Как вывести время на компьютере в c++?

Для кода нужно на вывести в цикле While, внутри оператора if время на ПК

200
площадь покрываемой фигуры из n прямоугльников

площадь покрываемой фигуры из n прямоугльников

На плоскости дан набор из N прямоугольников, заданных массивом [x1, y1, x2, y2], где (x1, y1) координаты нижнего левого угла, а (x2, y2) координаты верхнего...

167
Как реализовать работу с потоком в cin

Как реализовать работу с потоком в cin

Написал функцию, которая запрашивает ввод пользователя до тех пор, пока он не введёт число (если дробное, то преобразуется в целое с округлением...

158