#include <iostream>
#include <vector>
#include <string>
using std::cout; using std::endl;
using std::cin; using std::vector; using std::string;
int main()
{
cout << "Input strings(end-of-file to exit):"<<endl;
vector<string> strings;
string x;
while (cin >> x)
{
strings.push_back(x);
}
typedef vector<string>::size_type vc_sz;
vc_sz size = strings.size();
int same_string=0;
for (int i = 0; i < size; i++)
{
for (int j = i+1; j < size; j++)
{
if (strings[i] == strings[j])
++same_string;
}
}
cout << "Same string number:" << same_string << endl;
system("pause");
return 0;
}
Это код простой программы, которая подсчитывает, сколько строк входов является избыточным. Кажется, что все работает нормально, за исключением того, что мне нужно ввести конец файла (ctr + z) два раза, чтобы закончить цикл и получить результат. Я не могу понять, почему это происходит.C++ count redundant string
'в то время как (CIN >> х) 'может не делать то, что вы думаете, что он делает !! см. [здесь] (http://stackoverflow.com/search?q= [c% 2B% 2B] +% 22while +% 28cin +% 3E% 3E + x% 29% 22) ... –
Возможный дубликат [while (cin >> x) и проблемы с окончанием файла] (http://stackoverflow.com/questions/1078218/while-cin-x-and-end-of-file-issues) –
@ g-makulik это не случай, cin больше не используется после этого цикла – Slava