【39】MFC入门到精通——C++ /MFC操作文件行(读取,删除,修改指定行)

发布于:2025-07-21 ⋅ 阅读:(15) ⋅ 点赞:(0)

1 通过关键词,读取某一行 (3种方法)

通过定位关键词,读取某一行信息,返回CString

//通过定位关键词,读取某一行信息,返回CString
CString fileRW::Read_CStrLine(CString KEY)
{
	ifstream ifs; //创建文件输入对象
	ifs.open("../x64/Debug/config.ini", ios::in); //打开文件

	if (!ifs.is_open()) {
		cout << "文件打开失败" << endl;
		return _T("");
	}

	CString StrLine;
	//读文件,读取关键词KEY的下一行内容
	char buf[1024] = { 0 };

	while (KEY != CString(buf))
	{
		ifs.getline(buf, sizeof(buf)); //读取一行内容

	}

	ifs.getline(buf, sizeof(buf));
	StrLine = CString(buf);

	ifs.close(); //关闭文件

	return StrLine;
}

通过定位关键词,读取某一行信息,返回CString

//通过定位关键词,读取某一行信息,返回CString
CString fileRW::Read_KeyLine(CString KEY)
{

	if (!file.Open(GetAppPath() + "./config.ini", CFile::modeRead))
	{
		return 0;
	}

	CString   strLine = _T("");

	while (file.ReadString(strLine))
	{
		if (KEY == strLine)
		{
			break;
		}

	}
	file.ReadString(strLine);

	file.Close();

	return strLine;
}

通过定位关键词,读取某一行信息,返回string

//通过定位关键词,读取某一行信息,返回string
string fileRW::Read_strLine(string KEY)
{
	ifstream ifs; //创建文件输入对象
	ifs.open("../x64/Debug/config.ini", ios::in); //打开文件

	if (!ifs.is_open()) {
		cout << "文件打开失败" << endl;
		return "-1";
	}

	string StrLine;
	//读文件,读取关键词KEY的下一行内容
	char buf[1024] = { 0 };

	while (KEY != string(buf))
	{
		ifs.getline(buf, sizeof(buf)); //读取一行内容

	}

	ifs.getline(buf, sizeof(buf));
	StrLine = string(buf);

	ifs.close(); //关闭文件

	return StrLine;
}

2 删除 指定行

/************************************
@ Brief:		删除指定行
@ Author:
@ Created:
@ Return:
************************************/
void fileRW::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();
}

3 修改 指定行

void fileRW::ModifyLineData(string fileName, int lineNum, string lineData)
{
	ifstream in;
	in.open(fileName, ios::in);

	string strFileData = "";
	int line = 1;
	char tmpLineData[1024] = { 0 };
	while (in.getline(tmpLineData, sizeof(tmpLineData)))
	{

		if (line == lineNum)
		{
			strFileData += lineData;
			strFileData += "\n";
		}
		else
		{
			strFileData += tmpLineData;
			strFileData += "\n";
		}
		line++;
	}
	in.close();

	//写入文件
	ofstream out;
	out.open(fileName, ios::out);
	out.flush();
	out << strFileData;
	out.close();
}

参考:

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

MFC_9.13_登陆注册,txt保存用户名密码

MFC中修改特定行

C++实现读取文件的指定行数的方法
C++ 读文件某一行(特定行)数据

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到