我想读取格式如下的文件中的数据:

Point1, [3, 4]


我正在使用定界符'['']'和',',并将它们替换为''(空白)。我的代码现在可以正常工作了。但是问题是,如果Point1, [3, 4]出现一次,我希望它是唯一的,并且如果文本文件中存在相同的数据,则不要再次出现。

这是我所拥有的:

string line, name;
char filename[50];
int x,y;

cout << "Please enter filename : ";
cin >> filename;

ifstream myfile(filename);
if (myfile.is_open()) {
    while ( myfile.good() ) {
        getline(myfile, line);

        for (unsigned int i = 0; i < line.size(); ++i) {
            if (line[i] == '[' || line[i] == ']' || line[i] == ',') {
                line[i] = ' ';
            }
            istringstream in(line);
            in >> name >> x >> y;
        }
        cout <<name <<endl;

        if (name=="Point") {
            p.push_back(Point(x,y));
        }
        count++;
    }
    myfile.close();
    cout << count;
}
else cout<< "Unable to open file";


我该怎么做呢?我尝试在if(name=="Point")之后添加

for (int j=0; j<p.size(); j++) {
    if(p.getX != x && p.getY) != y) {
        p.push_back(Point(x,y))
    }
}


...但是由于数据未存储到向量中,因此无法正常工作。

有人可以帮忙吗?

最佳答案

可以将数据存储到vectors,而不是将数据存储到sets。集合仅包含唯一值,因此您不必检查Points的唯一性,set将对此进行管理。

不必定义vector<Point>,而必须定义set<Point>,而不是使用p.push_back将点添加到向量中,如果它是p.insert,则必须使用set

您可以查看set文档here

关于c++ - 从文件中提取数据到 vector 中,但避免重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13330732/

10-11 17:07
查看更多