读入2D矢量

时间:2013-09-12 20:46:52

标签: c++ input vector 2d tostring

我在从文件读取到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?

谢谢。

1 个答案:

答案 0 :(得分:4)

这部分代码没有意义(至少从流中消费数量):

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

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

同样适用于此

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

我认为你确实需要一个temp.clear(),你现在有theData.clear() tho'。