C++/Qt:TXT文件读写

本文详细介绍了一种使用QT进行文本文件读写的方法,包括读取文件内容并显示,以及从TXT文件中读取特定格式的数据,进行转换后保存到新文件的过程。代码实现了文件对话框选择、内容展示、特定格式读取与转换、以及将处理后的数据写入文件的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享给有需要的人,代码质量勿喷。

//一、读取内容显示
void TxtReadWrite::xjOpenShowContent()
{
	QString xjPath = QFileDialog::getOpenFileName(this, tr("选择TXT文件"),
                             QCoreApplication::applicationDirPath(), "文本文档(*.txt)");
	if (xjPath.size() > 0)
	{
		ui.lineEdit->setText(xjPath);
		ui.textEdit->clear();
		xjShowTxt(xjPath);
	}
}

void TxtReadWrite::xjShowTxt(QString xjPath)
{
	QFile xjFile(xjPath);
	if (!xjFile.open(QIODevice::ReadOnly))
		return;

	QString xjStr = "\0";
	while (!xjFile.atEnd())
	{
		QString xjLine(xjFile.readLine());
		xjStr += xjLine;
	}
	ui.textEdit->append(xjStr);
	xjFile.close();
}
//二、读取写入
void TxtReadWrite::xjZhSave()
{
	mxjPath = ui.lineEdit->text();
	xjReadTxt(mxjPath, mxjMap);

	QString xjWirtePath = mxjPath + ".txt";
	xjWriteTxt(mxjMap, xjWirtePath);
}

//读取并转换
void TxtReadWrite::xjReadTxt(QString mxjPath, map<int, QString> &mxjMap)
{
	mxjMap.clear();
	QFile xjFile(mxjPath);
	if (!xjFile.open(QIODevice::ReadOnly))
		return;

	QString xjNewLine = "\0";
	QStringList xjStringList;
	int i = -1;
	while (!xjFile.atEnd())
	{
		QString xjLine(xjFile.readLine());

		if (xjLine.contains("开始") || xjLine.contains("结束"))
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjStringList.at(0);
			i++;
			mxjMap[i] = xjNewLine;
		}
		else if (!xjLine.contains(","))
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjStringList.at(0);
		}
		else
		{
			xjStringList = xjLine.split('\n');
			xjNewLine = xjNewLine + ":" + xjStringList.at(0);
			i++;
			mxjMap[i] = xjNewLine;
		}
	}
	xjFile.close();
}

//写入
void TxtReadWrite::xjWriteTxt(map<int, QString> &mxjMap, QString mxjWritePath)
{
	QFile xjFile(mxjWritePath);
	if (!xjFile.open(QIODevice::WriteOnly | QIODevice::Text))
	{
		return;
	}

	QTextStream stream(&xjFile);
	QString xjLine = "\0";
	for (int i = 0; i < mxjMap.size(); i++)
	{
		xjLine = mxjMap[i];
		stream << xjLine + "\r\n";
	}
	stream.flush();
	xjFile.close();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

累了就要打游戏

把我养胖,搞代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值