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

How to parse csv file and do arithmetic operations on it using c++?

本文关键字:算术运算 文件 何使用 c++ 解析 csv      更新时间:2023-10-16

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

#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文件本身。如何解决这个问题?

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

因此,以low为例。取这个std::string,用它来构造std::stringstream,然后用operator>>把它放入doublefloat