![](/img/trans.png)
[英]How do I parse basic arithmetic (eg “5+5”) using a simple recursive descent parser in C++?
[英]How to parse csv file and do arithmetic operations on it using c++?
这是我的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>>
将其放入double
或float
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.