我正在尝试编写一个程序,在该程序中读取和写入已创建的 csv 文件。其中一些被新数据覆盖,而另一些则简单地添加到文件末尾。我使用以下方法打开文件:
ifstream file;
file.open("")
然后我阅读文件并进行必要的计算。我只是不知道如何以我需要的两种方式写回这个文件。我对编程比较陌生,所以最简单的答案是最好的。
我可以想到这两个方便的功能。
您可能希望typedef
某些类型。
/*Read CSV using a vector of vector of string */
std::vector<std::vector<std::string> > loadCSV(std::istream &input){
std::string csvLine;
std::vector<std::vector<std::string> > data;
while( std::getline(input, csvLine) ){
std::istringstream csvStream(csvLine);
std::vector<std::string> csvRow;
std::string csvCol;
while( std::getline(csvStream, csvCol, ',') )
csvRow.push_back(csvCol);
data.push_back(csvRow);
}
return data;
}
/*Modify Data by accessing elements of data[row][col]*/
/*Add new data using push_back ref. loadCsv function */
/* Finally update */
void saveCSV(std::ostream &output,const std::vector<std::vector<std::string> >& data){
if(!data.size())
return;
std::vector<std::vector<std::string> >::const_iterator i=data.begin();
for(; i != data.end(); ++i){
std::vector<std::string> row =*i;
if(!row.size())
continue;
std::vector<std::string>::const_iterator j=row.begin();
output<<*(j++);
for(;i != row.end();++j)
output<<','<<*j;
output<<std::endl;
}
}