读文件代码模板:
/*****************************************************************************
Copyright: GGuy
File name: None
Description:C++对excel文件的读操作示例
Input:filename:读取文件名,buff:读取数据缓冲区,size:读取字符串的个数,row:跳过几行(默认0),column:跳过几列(默认0)
Return: none
Author: GGuy
Version: 1
Date: 22.8.30
History:
Include:<fstream>
*****************************************************************************/
void Read_CSV(std::string filename,std::vector<std::string> buff,int size,int row = 0,int column = 0){
std::ifstream instrm(filename,std::ios::in);//只读模式打开文件
for (auto i = 0; i < row;i++)
instrm.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //跳过row行,从row+1行开始读
while (instrm.peek() != EOF){ //到达文件末尾标志
for (auto i = 0; i < column; i++)
instrm.ignore(std::numeric_limits<std::streamsize>::max(), ','); //跳过前面column列
for (auto i = 0; i < size;i++){ //每一行中的读取字符串的个数
//以,为标志,代表读取的一个字符串的结束
instrm.getline(const_cast<char*>(buff[i].data()), std::numeric_limits<std::streamsize>::max(),',');
}
instrm.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //文件光标移植下一行
}
instrm.close();
}
写文件代码模板:
/*****************************************************************************
Copyright: GGuy
File name: None
Description:C++对excel文件的写操作示例
Input:filename:读取文件名,buff:写入数据缓冲区,row:写入的行数 column:写入的列数
Return: none
Author: GGuy
Version: 1
Date: 22.8.30
History:
Include:<fstream>
*****************************************************************************/
void Write_CSV(std::string filename,std::vector<std::string> buff,int row,int column){
//读写,并且重复打开时会删除所有内容
std::ofstream outstrm(filename, std::ios::in | std::ios::out | std::ios::trunc);
for (auto i = 0; i < row;i++){
for (auto j = 0; j < column; j++)
{
if(j == column-1) //行末输入换行符
outstrm << buff[i*column+j] << '\n';
else //列与列之间用','相隔
outstrm << buff[i*column+j] << ',';
}
}
outstrm.close();
}