• C++操作文件行(读取,删除,修改指定行)


    /********************************************************
    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]!='';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 += "
    ";
    		}
    		else
    		{
    			strFileData += CharToStr(lineData);
    			strFileData += "
    ";
    		}
    		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 += "
    ";
    		}
    		else
    		{
    			strFileData += CharToStr(tmpLineData);
    			strFileData += "
    ";
    		}
    		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();
    }

                                                                        欢迎加群交流:C/C++开发交流

  • 相关阅读:
    《Linux性能及调优指南》第二章:监控和基准工具2.1-2.2
    《Linux 性能及调优指南》1.5 网络子系统
    《Linux 性能及调优指南》1.4 硬盘I/O子系统
    《Linux性能及调优指南》1.3 Linux文件系统
    《linux性能及调优指南》 3.5 网络瓶颈
    《linux性能及调优指南》 3.4 硬盘瓶颈
    《linux性能及调优指南》 3.3 内存瓶颈
    你应该使用Python3里的这些新特性
    python异步编程
    异步网络编程aiohttp的使用
  • 原文地址:https://www.cnblogs.com/woniu201/p/11694579.html
Copyright © 2020-2023  润新知