Возврат нескольких переменных с использованием перегруженного & lt; & lt; оператор при чтении файла

У меня особенная ситуация передо мной. Я сделал слишком много обработки информации в методе, который я не знаю, как получить какие-либо данные, обработанные в нем.

#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 пока цикл.

Теперь, чтобы начать все, как вы можете видеть, я объявил вектор и собираюсь передать разные данные (D.date, D.timeи т. д.) в него.

Но из того, что я знаю, метод разрушит себя после возвращения своего значения. И в этом методе он возвращает только тот «ввод», в котором я проигнорировал.

Как мне получить все данные из входного файла, который у меня есть, и выбросить их в разные контейнеры (D.date, D.timeи т. д.) вне метода?

Или же

Как мне вернуть все данные, которые я обработал этим методом?

FYI:

Структура не может быть использована здесь. Мне сказали специально не использовать структуру.

Входной файл:

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, который не будет использоваться.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]