注册 登录
编程论坛 VC++/MFC

两段如此相似的代码,结果却完全不一样

小菜B 发布于 2013-03-29 23:36, 561 次点击
这两段代码都是重"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
2 回复
#2
Susake2013-03-30 03:33

在循环体里面的...


[ 本帖最后由 Susake 于 2013-3-31 11:19 编辑 ]
#3
小菜B2013-03-31 09:07
回复 2楼 Susake
可是放在循环体外怎么会错了呢
1