我在从文件读取到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?
谢谢。
答案 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'。