C++文件I/O流:用fsteam实现对CSV文件的读写

读文件代码模板:

/*****************************************************************************
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();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值