Я, очевидно, не совсем понимаю концепцию «конца файла» в C ++, поскольку приведенная ниже программа просто не проходит этап «while (cin >> x)». Всякий раз, когда я запускаю его из командной строки, он просто насмехается надо мной.
Поиск по SO и другим местам дает много упоминаний о нажатии Ctrl + Z, а затем о нажатии Enter, чтобы пропустить символ конца файла в Windows, но это, похоже, не работает для меня. Это заставляет меня предположить, что моя проблема в другом месте. Может быть, определение x как строки - моя ошибка? Любые предложения о том, где я иду не так, были бы хорошими.
Примечание: извините за отсутствие комментариев в коде - сама программа должна принимать серию
слова, а затем выплюните счет для каждого слова.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using std::cin;
using std::cout; using std::endl;
using std::sort;
using std::string; using std::vector;
int main()
{
cout << "Enter a series of words separated by spaces, "
"followed by end-of-file: ";
vector<string> wordList;
string x;
while (cin >> x)
wordList.push_back(x);
typedef vector<string>::size_type vec_sz;
vec_sz size = wordList.size();
if (size == 0) {
cout << endl << "This list appears empty. "
"Please try again." << endl;
return 1;
}
sort(wordList.begin(), wordList.end());
cout << "Your word count is as follows:" << endl;
int wordCount = 1;
for (int i = 0; i != size; i++) {
if (wordList[i] == wordList[i+1]) {
wordCount++;
}
else {
cout << wordList[i] << " " << wordCount << endl;
wordCount = 1;
}
}
return 0;
}