#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)来结束循环并得到结果。我无法弄清楚为什么会这样。
答案 0 :(得分:4)
您似乎试图在行序列的末尾输出EOF字符:
> This is my inputEOF
这将强制您输入另一个EOF
以实际结束流。如果您想使用单个EOF结束流,则需要先按Enter键输入:
> This is my inputENTER
> EOF
答案 1 :(得分:0)
如果您使用std::set
int main()
{
cout << "Input strings(end-of-file to exit):"<<endl;
set<string> strings;
string x;
int same_string=0;
while (cin >> x)
{
if( !strings.insert(x).second ) ++same_string;
}
cout << "Same string number:" << same_string << endl;
system("pause");
return 0;
}