2016-10-30 88 views
-3
#include <iostream> 
#include <fstream> 
#include <vector> 
#include <string> 

using namespace std; 

int main() { 

    int number_of_lines = 0; 
    string line; 
    vector<double> prices; 

    ifstream myfile("SPY.txt"); 
    ifstream input("SPY.txt"); 
    double data; 


    while (std::getline(myfile, line)) 
     ++number_of_lines; 

    for (int z = 0; z != number_of_lines; z++) { 
     input >> data; 
     prices.push_back(data); 
     cout << prices[z] << endl; 

    } 



    system("pause"); 
    return 0; 

} 

上述代碼如何縮短但輸出結果相同?如果有更有效的方式來編寫佔用更少內存或空間的代碼,請讓我知道。該代碼如何縮短以獲得相同的結果?

+1

詢問http://codereview.stackexchange.com/ – StoryTeller

+1

您只需要一個文件流,而且不需要'number_of_lines'和'z'。 –

+0

如果您打算進行2次通過,您需要重新設置文件指針並清除流狀態,然後再次讀取。 –

回答

0

下面是一個簡化版本:

double cost; 
std::vector<double> prices; 
while (my_file >> cost) 
{ 
    prices.push_back(cost); 
    std::cout << cost << std::endl; 
} 

有使用迭代一個簡單的版本,但我會讓你在網上搜索了點。提示:搜索「輸入迭代器」。