C++从txt读入数据问题?

图片说明
发项目程序没人答,发个模板把
从txt读入,1个string,2个int,后面若干个int压入vector
但是循环只读了一行,不知道为什么,求解

c++

2个回答

问题出在内循环fin>>c这里。内循环退出的条件是fin>>c返回值为零,也就是没有读到整数。当文件指针跳到“京汉线”时,由于不是整数,所以内循环退出。内循环退出时,文件指针已经跳到了“京汉线”之后了。当外循环开始第二次读取时,实际上fin>>f读到的是“0”,实际这不是字符串,所以fin>>f返回0,外循环结束,就没有然后了。修改一下内外循环结束的条件,就能避免这种问题。

qq_42619368
Honma Himawari 回复要上天的拉布拉多: 主要是vector不定长的问题啊,定长的我前面做都没有问题的。。
大约一年之前 回复
qq_28249373
shifenglv 回复qq_42619368: 如果后面的数值个数是固定的,你完全可以用计数控制循环。像你这种问题,最好一次读取一行,不要使用内循环一个一个的读。
大约一年之前 回复
qq_42619368
Honma Himawari emmmm设定一个结束标志就行了,不劳费心了,谢谢,采纳了
大约一年之前 回复
qq_42619368
Honma Himawari 回复: 谢谢了
大约一年之前 回复
qq_42619368
Honma Himawari 意思完全理解。..能给个解决方案吗...还是有点束手无策啊..怎么让他在这一行结束或者防止他误读啊?我也不能倒退啊..
大约一年之前 回复

一行一行读的解决方案····

int main()
{
    ifstream fin("D:\\train.txt");
    ofstream oin("D:\\test.txt");
    string f;
    int a;
    vector<int> num;
    while (!fin.eof())
    {
        getline(fin, f);
        istringstream line(f);
        string name;
        line >> name;
        oin << name << " ";
        while ((line>>a))
        {
            oin << a << " ";
        }
        oin << endl;
    }
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问