心ない 2021-06-20 20:10 采纳率: 100%
浏览 121
已结题

c++文件内容查询并删除

想要从文件中读取特定值并删除特定值所在的那一行数据,一天了,救救孩子吧

 

  • 写回答

3条回答 默认 最新

  • 小P聊技术 2021-06-20 20:12
    关注
    
    /********************************************************
    Copyright (C),  2016-2018,
    FileName:		main
    Author:        	woniu201
    Email:         	wangpengfei.201@163.com
    Created:       	2018/08/31
    Description:	文件操作:读取指定行,删除指定行,修改指定行
    ********************************************************/
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
     
    /************************************
    @ Brief:		读取指定行数据
    @ Author:		woniu201 
    @ Created:		2018/08/31
    @ Return:            
    ************************************/
    void ReadLineData(char* fileName, int lineNum, char* data)
    {
    	ifstream in;
    	in.open(fileName);
     
    	int line = 1;
    	while (in.getline(data, 1024))
    	{
    		if (lineNum == line)
    		{
    			break;
    		}
    		line ++ ;
    	}
     
    	in.close();
    }
     
    /************************************
    @ Brief:		字符串转string类型
    @ Author:		woniu201 
    @ Created:		2018/08/31
    @ Return:            
    ************************************/
    string CharToStr(char * contentChar)
    {
    	string tempStr;
    	for (int i=0;contentChar[i]!='\0';i++)
    	{
    		tempStr+=contentChar[i];
    	}
    	return tempStr;
    }
     
     
    /************************************
    @ Brief:		删除指定行
    @ Author:		woniu201 
    @ Created:		2018/08/31
    @ Return:           
    ************************************/
    void DelLineData(char* fileName, int lineNum)
    {
    	ifstream in;
    	in.open(fileName);
    	
    	string strFileData = "";
    	int line = 1;
    	char lineData[1024] = {0};
    	while(in.getline(lineData, sizeof(lineData)))
    	{
    		if (line == lineNum)
    		{
    			strFileData += "\n";
    		}
    		else
    		{
    			strFileData += CharToStr(lineData);
    			strFileData += "\n";
    		}
    		line++;
    	}
    	in.close();
     
    	//写入文件
    	ofstream out;
    	out.open(fileName);
    	out.flush();
    	out<<strFileData;
    	out.close();
    }
     
    /************************************
    @ Brief:        修改行数据
    @ Author:		woniu201 
    @ Created:		2018/08/31
    @ Return:            
    ************************************/
    void ModifyLineData(char* fileName, int lineNum, char* lineData)
    {
    	ifstream in;
    	in.open(fileName);
     
    	string strFileData = "";
    	int line = 1;
    	char tmpLineData[1024] = {0};
    	while(in.getline(tmpLineData, sizeof(tmpLineData)))
    	{
    		if (line == lineNum)
    		{
    			strFileData += CharToStr(lineData);
    			strFileData += "\n";
    		}
    		else
    		{
    			strFileData += CharToStr(tmpLineData);
    			strFileData += "\n";
    		}
    		line++;
    	}
    	in.close();
     
    	//写入文件
    	ofstream out;
    	out.open(fileName);
    	out.flush();
    	out<<strFileData;
    	out.close();
    }
     
    int main()
    {
    	char lineData[1024] = {0};
    	ReadLineData("D:\\project\\cpp\\2010\\jsondemo\\jsondemo\\1.json", 21, lineData);
    	cout << lineData << endl;
     
    	DelLineData("D:\\project\\cpp\\2010\\jsondemo\\jsondemo\\1.json", 10);
     
    	ModifyLineData("D:\\project\\cpp\\2010\\jsondemo\\jsondemo\\1.json", 10, "aaaaaaaaaaaaaa");
    	getchar();
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月9日
  • 已采纳回答 7月1日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像