#include<iostream>
#include<vector>
#include<fstream>
#include "stock.h"
int main(){
double balance =0, tempPrice=0;
string tempStr;
vector < Stock > portfolio;
typedef vector<Stock>::iterator StockIt;
ifstream fileIn( "Results.txt" );
for(StockIt i = portfolio.begin(); i != portfolio.end(); i++)
{
while ( !fileIn.eof( ))
{
getline(fileIn,tempStr);
i->setSymbol(tempStr);
fileIn >> tempPrice;
i->setPrice(tempPrice);
getline(fileIn,tempStr);
i->setDate(tempStr);
}
fileIn.close();
}
for(StockIt i = portfolio.begin(); i != portfolio.end(); i++){
cout<<i->getSymbol() <<endl;
cout<<i->getPrice() <<endl;
cout<<i->getDate() <<endl;
}
return 0;
}
Пример текстового файла, Results.txt:
GOOG 569.964 11/17/2010
MSFT 29.62 11/17/2010
YHOO 15.38 11/17/2010
AAPL 199.92 11/17/2010
Теперь, очевидно, я хочу, чтобы эта программа создала вектор объектов Stock, который имеет соответствующий набор /получить функциональность для объекта: Stock(string, double, string)
.
Как только это будет сделано, я хочу распечатать каждый отдельный элемент каждого объекта в векторе.
Одна вещь, которая поражает мое мнение о fstream
, заключается в том, как она может расшифровать пробелы и конец строк, а также грамотно прочитать строки / целые / двойные числа и поместить их в соответствующий тип данных?Может быть, он не может ... и мне нужно добавить совершенно новую функциональность?
теперь может показаться, что я не создаю новый объект для каждой итерации цикла?Я думаю, нужно было бы сделать что-то вроде:
portfolio.push_back(new Stock(string, double, string));
?Я просто не совсем уверен, как добраться до этой точки.
Кроме того, этот код должен быть взаимозаменяемым с std::list
, а также std::vector
.Эта программа компилируется без ошибок, однако выходной сигнал равен нулю.