私は過去の株価を使用して株式データの分析を試みています。このデータは、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();
}
あなたのコードスニペットはどこですか? https://stackoverflow.com/help/how-to-ask – Frrank
任意のヘッダーとは独立して動作するコードを提供してください。 'Spliter'はどこから来たのですか?コードに '#include'やメイン関数などが含まれていれば、それはさらに良くなります。可能な限り少ない数の行を使用して同じ問題を抱える作業例は、あなたの質問をより魅力的で読みやすいようにします。 – Arash