No bo niepotrzebnie te znaki liczysz. Oczywiście zakładam(y) że słowo może zawierać także znak przestankowy.
"Szkolne rozwiązanie" jest stosunkowo proste:
1. Wczytaj linię.
2. Zapisz ją do obiektu std::stringstream
3. Sukcesywnie wczytuj z std::stringstream słowa zliczając je.
Jak się to połączy już z algorytmami, to będzie proste:
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
int main() {
using ciIter = std::istream_iterator<std::string>;
std::cout << "Wprowadź tekst:\n";
std::string line;
std::getline(std::cin, line);
std::stringstream swords(line);
auto word_count = std::distance(cIter(swords), cIter());
std::cout << "Ilość wyrazów wynosi: " << word_count << '\n';
}