Honma Himawari 2019-01-05 18:54 采纳率: 0%
浏览 758
已采纳

C++从txt读入数据问题

如图,读入文件train.txt,格式为1个string,2个int,然后后面若干个int数压入vector数组,测试输出到test.txt,只读了一行,那行数据程序测试是对的。
就大概这样的格式大量数据怎么读啊...
哪里有错或者有什么更好的办法吗?

emmmm怎么没人答呢图片说明就是这个模板,我想反复读这个格式,但是他只读一行就结束了

  • 写回答

3条回答 默认 最新

  • 软侠 2019-01-07 18:57
    关注

    看了一下你的程序,首先,你程序逻辑本身有问题,其次,对文件读取的使用应该是用错了。第一个问题,你外循环while (fin >> f)和内循环while ((fin >> c)),用的都是同一个流fin,你本来的意图是外循环是读取一行,内循环是读取行中的一个字段吧,但两个循环都是针对fin,如果你内循环是希望读到一行末会结束循环,那外循环不一样也是读到一行末就结束循环了?那外循环还有什么用?所以这是你第一个代码逻辑上的错误。第二个问题,fin >> x这种确实是读到一行末就会结束而不是到文件末,所以你上面程序对它的使用是背离了你的原意。
    据此,根据你上面的程序逻辑,为你写好了下面的程序代码(可直接拷贝使用):
    int main()
    {
    ifstream fin("train.txt");
    ofstream oin("test.txt");
    if (!fin.is_open() || !oin.is_open())
    {
    return -1;
    }
    string f;
    int a, b, c;
    //vector num;

        string str;
        stringstream ss;
    
                while (!fin.eof())
        {
                getline(fin, str);
    
                ss << str;
                ss >> f >> a >> b;
                oin << f << " " << a << " " << b << " ";
                while (ss >> c)
                {
                        oin << c << " ";
                }
                oin << endl;
        }
                fin.close();
                oin.close();
        return 0;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?