c ++计算冗余字符串

时间:2013-11-26 19:39:57

标签: c++ string

#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)来结束循环并得到结果。我无法弄清楚为什么会这样。

2 个答案:

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