0

我正在尝试编写一个程序,在该程序中读取和写入已创建的 csv 文件。其中一些被新数据覆盖,而另一些则简单地添加到文件末尾。我使用以下方法打开文件:

ifstream file;
file.open("")

然后我阅读文件并进行必要的计算。我只是不知道如何以我需要的两种方式写回这个文件。我对编程比较陌生,所以最简单的答案是最好的。

4

1 回答 1

0

我可以想到这两个方便的功能。

您可能希望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;
  }
}
于 2013-08-05T21:18:55.830 回答