两段如此相似的代码,结果却完全不一样
这两段代码都是重"123.txt"中读取数据存入一个二维向量中,并打印在显示屏上代码一:
//文件读取与排序
#include<iostream>
#include<fstream>
#include<vector>
#include<sstream>
//===========
int main(){
std::ifstream fin("123.txt");
std::string str; //请注意这一行string str在for外
std::istringstream sin(str);
std::vector<std::vector<int> > a;
for(;std::getline(fin,str);){
std::vector<int> b;
for(int item;sin>>item;)
b.push_back(item);
a.push_back(b);}
for(int m=0;m<a.size();++m)
for(int n=0;n<a[m].size();++n)
std::cout<<a[m][n];
}
代码二:
//文件读取与排序
#include<iostream>
#include<fstream>
#include<vector>
#include<sstream>
//===========
int main(){
std::ifstream fin("123.txt");
std::vector<std::vector<int> > a;
for(std::string str;std::getline(fin,str);){ //在代码二中,定义的string str在for中
std::vector<int> b;
std::istringstream sin(str);
for(int item;sin>>item;)
b.push_back(item);
a.push_back(b);
}
for(int i=0;i<a.size();++i)
for(int k=0;k<a[i].size();++k)
std::cout<<a[i][k];
}
结果代码二能够完成任务,代码一虽然能通过编译和连接却得不到正确的结果。这是为什么?
123.tet 如下
24 356 65 36 455 365
15 35 645 65 356 24
12 54 52
145 25
1