C++ CSV文件,逗号商店的分割线并运行。量子历法
一, 我有一个csv文件,如下所示:C++ CSV文件,逗号商店的分割线并运行。量子历法,c++,csv,quantlib,C++,Csv,Quantlib,一, 我有一个csv文件,如下所示: XXXX,20140101 XXXX,20140102 XXXX,20140103 XXXX,20140108 XXXX,20140212 以此类推,它远不止于此 二, 以下方法调用将启动我要设计的流程: Calendar XXXXCal = FromFile("h:\\temp\\XXXXdata.csv","XXXX"); 三, 使用C++,我想读取那些输入参数,这些参数包括文件和特定值。下面的代码在某种程度上说明了我要做的事情,首先,看
XXXX,20140101
XXXX,20140102
XXXX,20140103
XXXX,20140108
XXXX,20140212
以此类推,它远不止于此
二,
以下方法调用将启动我要设计的流程:
Calendar XXXXCal = FromFile("h:\\temp\\XXXXdata.csv","XXXX");
三,
使用C++,我想读取那些输入参数,这些参数包括文件和特定值。下面的代码在某种程度上说明了我要做的事情,首先,看一看,下面我将进一步阐明我的意图
BespokeCalendar Calendar::XXXXCal(string input_file_name, string input_market)
{
/* Declare the variables to be used */
BespokeCalendar result;
string filename = input_file_name;
string marekt = input_market;
string csvLine
string csvMarket;
string csvDate;
ifstream csvFile ( filename ); // declare file stream
if( csvFile.good()) )
{
while (getline (csvFile,csvLine)
{
var containerArray = line.Split(",");
var csvDate = containerArray[1];
var csvMarket = containerArray[0];
if (csvMarket == marekt)
{
result.addHoliday( csvDate );
}
}
}
else
{
cout << "Unable to open file";
}
result.addWeekend();
return result;
}
正如你所看到的,我想逐行读取csv文件,上面的代码肯定无法完成。我已经读到ifstream处理文件上的迭代,getline将让我进入下一行,是这样吗?这是怎么回事
我还怀疑split方法是否存在这样的情况,我是否必须用find_first_of and substr构造它
如何为此编写合理的测试脚本
我正在修改QuantLib的calendar类 正如我在一篇评论中提到的,您应该为读取的行创建一个stringstream,然后使用stringstream对象上的getline按逗号字符将其拆分。这比为字符串创建拆分函数容易得多
ifstream csvFile ( filename ); // declare file stream
if( csvFile.good()) )
{
while (getline (csvFile,csvLine)
{
stringstream ss(csvLine);
string csvMarket;
string csvDate;
getline(ss, csvMarket, ',');
getline(ss, csvDate, ',');
if (csvMarket == marekt)
{
result.addHoliday( csvDate );
}
}
}
S.var不是C++关键字< /p>没有STD::String的分割方法。您可以创建读取行的stringstream,然后再次使用getline作为分隔符来分隔列。您可以给我看一个示例,或者为我指出一些文档的方向吗?我对C++的概念不太了解,我想我知道这里发生了什么,但由于数据存储在csv中,就像这样XXXX,20140101第11行应为getnesy,csvDate,“\n”;类似的东西,用“n”代替“,”,如果没有逗号,它读到行的末尾,把它写进第二个论证。什么是测试这个最好的方法,你怎么看待DEV-C++?@ USER?因为这段代码只使用标准库,所以我尝试了这个解决方案,但事实上,当我打印出变量的值时,它们是空的。我试图在编辑你的原始评论时演示,但根据我收到的一条消息,我首先收到的评论必须经过同行审查,因此我不知道你是否能看到它。我需要担心关闭文件或类似的事情吗?不,IFStand的析构函数自动关闭文件,你会考虑C++代码测试的最佳方法,你觉得DEV-C++如何?
ifstream csvFile ( filename ); // declare file stream
if( csvFile.good()) )
{
while (getline (csvFile,csvLine)
{
replace(csvLine.begin(), csvLine.end(), ',', ' '); // from <algorithm>
istringstream ss(csvLine);
istream_iterator<string> it(ss), itend; // from <iterator>
vector<string> containerArray(it, itend); // from <vector>
string csvDate = containerArray[1];
string csvMarket = containerArray[0];
if (csvMarket == marekt)
{
result.addHoliday( csvDate );
}
}
}