重写与添加到c++中已读csv文件的末尾
Overwriting vs. adding to the end of read csv files in c++
我正在尝试编写一个程序,在该程序中,我可以读写已经创建的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;
}
}
相关文章:
- 正在将csv文件读取为双精度矢量
- 如何选择在 csv 文件中输出的位置
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 无法读取C++中的 CSV 文件
- 流:CSV 文件中的换行符
- 是否可以使用 Python csv 阅读器读取使用 C++ std::setw 生成的文件?
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何正确格式化csv文件?
- 正在分析CSV文件-C++
- 如何获取组件和搜索 CSV 文件
- C++ 中的 CSV 文件管理(特别是设置标头和每个标头将分别具有的值)
- 无法逐行读取.csv文件
- 非常快速地阅读 CSV 文件
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- CSV文件之间的差异,使用getline()产生不同的结果
- 将 CSV 文件中的双倍值C++到矢量中
- C++ 将 CSV 文件的列写入向量
- 使用getline读取.csv文件时出现问题
- CSV文件未从缓冲区获取数据
- 错误的值是使用c++从CSV文件数据写入数组