使用重载<<返回多个变量读取文件时的操作符

时间:2014-02-24 17:11:16

标签: c++ methods return getline fileinputstream

我面前有一种奇怪的情况。我在一个方法中做了太多的信息处理,我不知道如何检索其中处理的任何数据。

#include "Processing.h"
#include <sstream>
#include "vector.h"
#include "Data.h"



Processing::Processing()
{
  date = '0';

}

int maxlines = -1;

istream& operator>>(istream& input, Processing& D)
{
    vector<Data> v(maxlines);
    int count = 0;

    loop:
    int times = 1;

    maxlines++;
    while (!input.eof())
    {
        if (count < 2)
        {
            getline(input, D.title);

            count++;
        }
        else
        {
            stringstream ss;
            Data MC;

            switch (times)
            {
            case 1:
                getline(input, D.data, ',');
                ss << D.data;
                ss >> D.date;
                //v.push_back(D.date);
                ss >> D.time;
                ss >> D.ampm;
                break;
            case 2:
                getline(input, D.data, ',');
                ss << D.data;
                ss >> D.price;
                break;
            case 3:
                getline(input, D.data, ',');
                ss << D.data;
                ss >> D.volume;
                break;
            case 4:
                getline(input, D.data, ',');
                ss << D.data;
                ss >> D.insum;
                break;
            case 5:
                getline(input, D.condition);
                MC.set(D.date, D.time, D.ampm, D.price, D.volume, D.insum, D.condition);
                v.push(MC);
                goto loop;
            default:
                return input;
            }
            times++;
        }
    }
}

ostream & operator <<( ostream & os, const Processing & D )
{


    os  << D.header << '\n'
    << D.price << '\n'
    << D.volume << '\n';



  return os;
}

我知道代码很乱,但请耐心等待,我确实理解eof循环中的while是错误的。因为我还是学生,所以让代码工作更为重要。但是,当然,您可以建议eof while循环的替代方案。

现在开始,你已经宣布了一个向量,并打算将不同的数据(D.dateD.time等)推入其中。

但据我所知,一个方法会在返回它的值后自行毁灭。在这种方法中,它只返回我忽略的“输入”。

如何从我输入的文件中获取所有数据并将其放入方法之外的不同容器(D.dateD.time等)?

或者

如何返回我在此方法中处理过的所有数据?

供参考:

这里不能使用Struct。我被告知不要使用struct。

输入文件:

Course Of Sales
Time,Price ($),Volume,Value ($),Condition
10/10/2013 04:57:27 PM,5.81,5000,29050.00,LT XT
10/10/2013 04:48:05 PM,5.81,62728,364449.68,SX XT
10/10/2013 04:10:33 PM,.00,0,.00,

请注意,前两行被忽略并进入名为D.header的容器,该容器不会被使用。

0 个答案:

没有答案