无法无限循环地将文件重复读入两个对象

时间:2016-10-05 01:25:58

标签: c++

c ++初学者和第一次海报。

我正在读一个由分号分隔的一系列大数字组成的文件。

我正在尝试创建一个循环,其中文件被读入两个对象(第一个数字,第一个数字中的分号,第二个数字中的第二个数字),然后打印包含每个数字的两个对象。打印前两个后,应重复下两个数字,直到文件结束。

我一直在玩它很多,无法让它工作。两个问题不断出现:

  1. 无限循环

  2. 无法将数字读入对象

  3. 我目前有运营商>>重载如下:

    std::istream& operator>>(std::istream& fin, big& obj){
        char temp[size];
        char stop = ';';
        fin.get(temp, size, stop);
        //constructor converts temp to big
        obj = big(temp);
        return in;
    }
    

    我正确地打开文件,当我在一个对象上使用它时(在>> big1中)它正常工作并读取第一个数字。

    但是如果我尝试读入两个对象(在>>> big1>> big2),那么只有第一个得到一个数字而第二个得不到任何东西(big1 == 1234 big2 == 0)。

    如果我尝试在最终目标的循环中执行此操作,那么我只是得到一个零无限循环。这是我现在正在尝试做的基本代码:

    //file opens correctly
    big big1, big2;
    
    while (!fin.eof()){
    
        //read two numbers from file seperated by semicolon
        fin >> big1 >> big2;
        std::cout << big1 << "\n";
        std::cout << big2 << "\n";
    
        //repeat until end of file reached
    }
    fin.close();
    return 0;
    

    我怎么写这个可以工作?我一直在尝试多种方式来编写它,没有任何作用,但它必须是可能的。

    如果可以,请帮助我!

    另请注意,我不能使用预定义的类,如std :: vector或std :: string

0 个答案:

没有答案