C++ string Finding words that begin with a given letter.

Description

C++ string Finding words that begin with a given letter.

#include <iostream>
#include <iomanip>
#include <cctype>
#include <string>
#include <vector>

using std::string;

int main()//from ww  w.  ja  v a2 s  .  com
{
  string text {"this is a test"};// The text to be searched
  string letters {"s"};

  const string separators {" ,;:.\"!?'\n"};  // Word  delimiters

  std::vector<string> words;                 // Words found

  const int perline {5};                     // Words output per line

  int count {};                              // Number of words found

  for (auto ch : letters)
  {
    int start {text.find_first_not_of(separators)};         
    int end {};                                             
    string word;                                            
    int max_length {};                                      
    while (start != string::npos)                           
    {
      end = text.find_first_of(separators, start + 1);      
      if (end == string::npos)                              
        end = text.length();                                
      word = text.substr(start, end - start);               
      if (std::toupper(word[0]) == std::toupper(ch))        
      {
        words.push_back(word);                              
        if (max_length < word.length()) max_length = word.length();
      }

      start = text.find_first_not_of(separators, end + 1);  
    }
    // List words for current letter
    max_length += 2;
    std::cout << "\nWords beginning with '" << ch << "' are:\n";
    for (auto& word : words)
    {
      std::cout << std::setw(max_length) << std::left << word;
      if (++count % perline) continue;
      std::cout << std::endl;
    }
    std::cout << std::endl;
    words.clear();
    count = 0;
  }
}



PreviousNext

Related