このプログラムは、標準入力ストリームに与えられた各単語を保存し、それらの出現回数をカウントすることになっています。結果は、その後に順番に出力され、その後にカウントが続くはずです。私が知る限り、プログラムは別の方法で動作していますが、文字列は文字自体ではなく文字の ASCII 値として出力されます。どうしたの?
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <cctype>
#include <algorithm>
std::string get_word();
int main()
{
std::vector<std::string> words;
std::string word;
while (std::cin.good()) {
word = get_word();
if (word.size() > 0)
words.push_back(word);
}
std::sort(words.begin(), words.end());
unsigned n, i = 0;
while (i < words.size()) {
word = words[i];
n = 1;
while (++i < words.size() and words[i] == word)
++n;
std::cout << word << ' ' << n << std::endl;
}
}
std::string get_word()
{
while (std::cin.good() and !std::isalpha(std::cin.peek()))
std::cin.get();
std::stringstream builder;
while (std::cin.good() and std::isalpha(std::cin.peek()))
builder << std::cin.get();
return builder.str();
}