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; } }