0

我在从文件读取到 2D 矢量时遇到问题。我是 C++ 新手,我没有看到我的代码存在问题。

该文件遵循此模式。

5
0 0 0 0 1
0 0 0 1 0
0 0 0 1 1
0 0 1 0 0
...

我的阅读算法...

void Similarity::readData(Scanner& inStream){
        dataLength = inStream.nextInt();
        while(inStream.hasNext()){
                vector<int> temp;
                int tempInt = 0;
                for(int i = 0; i < dataLength; ++i){
                        tempInt = inStream.nextInt();
                        temp.push_back(tempInt);
                        temp.clear();
                }
                theData.push_back(temp);
                theData.clear();
        }
}

和我打印它的算法。

string Similarity::toString(){
        string result = "";
        for(int i = 0; i < theData.size(); ++i){
                for(int j = 0; j < dataLength; ++j){
                        result += convertInt(theData[i][j]);
                }
                result += "\n";
        }
        return result;
}

string Similarity::convertInt(int number){
        stringstream s;
        s << number;
        return s.str();
}

toString 没有输出,是我需要处理的 readData 还是 toString?

谢谢你。

4

1 回答 1

4

这部分代码是没有意义的(至少从使用流中的数字辅助):

                    tempInt = inStream.nextInt();
                    temp.push_back(tempInt);
                    temp.clear();

因为temp.clear()立即删除使用 push_back() 插入的对象。

同样适用于此

            theData.push_back(temp);
            theData.clear();

我认为你确实需要一个temp.clear()你现在拥有theData.clear()的地方。

于 2013-09-12T20:50:31.387 回答