如何使用c ++解析csv文件并对其进行算术运算?

时间:2016-07-25 02:59:33

标签: c++ csv

这是我的CSV file,我想解析这个csv数据并获取相应的列。然后使用fetched列执行一些算术运算。这是我的代码

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
//https://ethercalc.org/fo128cmznr

int main()
{
    std::vector <double> vec,vec1;
    std::ifstream theFile("stock.csv");
    std::string symbol,date;
    std::string line;
    double open,high,low,close,adjclose,volume;
    while (getline(theFile, line))
    {
        std::stringstream linestream(line);
        std::getline(linestream, symbol, ',');
        std::getline(linestream, date, ',');
        std::getline(linestream, open, ',');
        std::getline(linestream, high, ',');
        std::getline(linestream, low, ',');
        std::getline(linestream, close, ',');
        std::getline(linestream, adjclose, ',');
        std::getline(linestream, volume, '\n');
        std::cout<<"volume "<<volume<<"\n";
        double sum=(volume+close)/open;
        double rat=(open/high);
        std::cout<<"sum "<<sum<<"\n";
        vec.push_back(sum);
        vec1.push_back(rat);

    }
return 0;
}

这是问题所在;如果我将每个变量转换为字符串,但我不能以字符串形式执行算术运算,我可以解析数据。但如果我使用其他格式的变量,如double,float等,那么我无法解析csv文件本身。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您证明您知道std::stringstream是什么,并且您知道如何使用它。

所以,举个例如low。拿这个std::string,用它来构建std::stringstream,然后使用operator>>将其放入doublefloat