gpt4 book ai didi

c++ - 克服下载 CSV 文件进行解析时的问题。 Linux 与 Windows 换行符

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:21 27 4
gpt4 key购买 nike

我正在尝试使用历史股票价格来分析股票数据。该数据可以以 CSV 文件形式从雅虎财经 ( https://finance.yahoo.com/quote/AAPL/history?p=AAPL ) 下载。但是,当我下载该文件时,它被组织为一行,并且在每行末尾没有用新行分隔。我读到这是因为不同的操作系统使用不同的字符来表示新行。下载文件时或在文本编辑器中是否可以解决此问题,或者我应该修改代码以适应下载文件的格式。我在 Windows 10 上使用 C++ 进行编码,并在记事本中查看文件。 (我也是 StackOverFlow 的新手,因此欢迎提出问题的建议。)

示例:代码应该是怎样的

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,157.080002,155.020004,155.979996,155.421280,42584200

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

如何下​​载

2017-10-16,157.899994,160.000000,157.649994,159.880005,159.307312,241215002017-10-17,159.779999,160.869995,159.229996,1 60.470001,159.895203,189973002017-10-18,160.419998,160.710007,159.600006,159.759995,159.187729,163742002017-10-19,156.75000 0,157.080002,155.020004,155.979996,155.421280,425842002017-10-20,156.610001,157.750000,155.960007,156.250000,155.690308,239 74100

我要在文件中读取的代码

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();

}

最佳答案

我发现了问题所在。为了在 Mac、Windoxs 或 Unix 等平台之间转换 EOL 行结尾,请下载文本编辑器,例如 Notepad++。在 notepadd++ 中打开文件并转到编辑选项卡。找到 EOL CONversion 按钮并使用它来转换文件。

关于c++ - 克服下载 CSV 文件进行解析时的问题。 Linux 与 Windows 换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47322324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com