2017-11-16 1 views
-1

私は過去の株価を使用して株式データの分析を試みています。このデータは、Yahoo Finance(https://finance.yahoo.com/quote/AAPL/history?p=AAPL)からCSVファイルとしてダウンロードできます。しかし、私がファイルをダウンロードすると、それは1行として編成され、各行の最後に新しい行で区切られていません。私は、これは異なるOSが異なる行を表すために異なる文字を使用するためであることを読んだ。ファイルやテキストエディタでこの問題を克服する方法はありますか?ファイルをダウンロードする形式に合わせてコードを変更する必要がありますか?Windows 10ではC++で、NotePadではファイルを表示しています。 (イムは、新しい高く評価され問う質問にそうアドバイスをStackOverflowのである。)解析用のCSVファイルをダウンロードする際の問題の克服。 Linux vs Windows New Line Charachter

例: コードはどのようにあるべき

2017-10-16,157.899994,160.000000,157.649994,159.880005,159.307312,24121500

2017-10-17,159.779999,160.869995,159.229996,160.470001,159.895203,18997300

2017-10-18,160.419998,160.710007,159.600006,159.759995,159.187729,16374200

2017-10-19,156.750000,15それは

2017-10-16,157.899994,160.000000,157.649994をダウンロードする方法7.080002,155.020004,155.979996,155.421280,42584200

2017-10-20,156.610001,157.750000,155.960007,156.250000,155.690308,23974100

、 159.880005,159.307312,241215002017-10-17,159.779999,160.869995,159.229996,160.470001,159.895203,189973002017-10-18,160.419998,160.710007,159.600006,159.759995,159.187729,163742002017-10-19,156.750000,157.080002,155.020004,155.979996,155.421280,425842002017-10- 20,156.610001,157.750000,155.960007,156.250000,155.690302,23974100

私のコードは、私はこの問題を考え出したファイル

void Stock::readData(filename){ 
ifstream stream; 
stream.open(fileName); 

if(stream.fail()){ 
    cout << "The file " << fileName <<" failed to open." << endl; 
    return; 
} 


string line =""; 
cout << line << endl; 

while(!stream.eof()){ 

    // cout << '*' << endl; 
    getline(stream,line); 
    //cout << line << endl; 

    string parsed[7]; 

    int num = Spliter(line, ',', parsed, 7); 

    string tempDate; 
    float tempOpen; 
    float tempHigh; 
    float tempLow; 
    float tempClose; 
    float tempCloseAdj; 
    float tempVolume; 

    /*for(int i=0; i<num; i++){ 
     cout << parsed[i] << endl; 
    }*/ 

    tempDate = parsed[0]; 
    tempOpen = stof(parsed[1]); 
    tempHigh = stof(parsed[2]); 
    tempLow = stof(parsed[3]); 
    tempClose = stof(parsed[4]); 
    tempCloseAdj = stof(parsed[5]); 
    tempVolume = stof(parsed[6]); 


/* 
    cout <<(tempDate) << " "; 
    cout << (tempOpen)<< " "; 
    cout << (tempHigh)<< " "; 
    cout << (tempLow)<< " "; 
    cout << (tempClose)<< " "; 
    cout << tempCloseAdj<< " "; 
    cout << (tempVolume) << endl; 
*/ 

    vector<float> v; 

    dates.push_back(tempDate); 
    data.push_back(v); 
    data[numberOfDays].push_back(tempOpen); 
    data[numberOfDays].push_back(tempHigh); 
    data[numberOfDays].push_back(tempLow); 
    data[numberOfDays].push_back(tempClose); 
    data[numberOfDays].push_back(tempCloseAdj); 
    data[numberOfDays].push_back(tempVolume); 
    // cout << '#' << endl; 

    numberOfDays++; 
} 

stream.close(); 

}

+1

あなたのコードスニペットはどこですか? https://stackoverflow.com/help/how-to-ask – Frrank

+0

任意のヘッダーとは独立して動作するコードを提供してください。 'Spliter'はどこから来たのですか?コードに '#include'やメイン関数などが含まれていれば、それはさらに良くなります。可能な限り少ない数の行を使用して同じ問題を抱える作業例は、あなたの質問をより魅力的で読みやすいようにします。 – Arash

答えて

0

で読み取ります。 Mac、Windoxs、Unixなどのプラットフォーム間でEOL行末を変換するには、Notepad ++のようなテキストエディタをダウンロードします。 notepadd ++でファイルを開き、編集タブに行きます。 EOL変換ボタンを見つけ、それを使ってファイルを変換します。

関連する問題