qt C++ 读写文本文件并进行分割处理存储

让用户可以选择打开一个文件

最简单的可调用头文件QFileDialog下的静态函数

QFileDialog::getOpenFileName()及相应的控件按钮,代码如下

QString path = QFileDialog::getOpenFileName(this,"打开文件","../",tr("(*.txt *.TXT)") /*txt过滤器*/);
ui.lineEdit->setText(path);//lineEdit显示路径
	int t = 0;
	//读取文件内容,放入textEdit
	QFile file(path);

QFileDialog::getOpenFileName()静态函数需要传递三个字符串类型参数,依次是:

  • 对话框标题,即显示的文字描述
  • 初始化目录,即按钮响应时弹出的默认目录路径,这里涉及到相对路径绝对路径

绝对路径简单的说就是完整描述文件位置的路径,比如文件在盘的搜索路径

相对路径即是本地相对于目标的位置,我们使用**“…/”来表示上一级目录,“…/…/”表示上上级的目录,**一般来说在开发中,使用以相对路径为主

  • 文件过滤器,通过设置选择不同后缀的文件来进行限制选择,可以设置多组文件,每组文件之间用两个分号隔开,同一组内不同后缀之间用空格隔开,例如:
  • QString f = “文本文件(.txt)”;;图片文件*(**.jpg *.png);;

文件的打开方式及读取

file.open(QIODevice::ReadOnly);//打开方式,只读
/*
QIODevice::ReadOnly   //以只读的方式打开(文件不存在出错)
QIODevice::WriteOnly  //以只写的方式打开,打开时文件内原内容清空(文件不存在则创建)
QIODevice::ReadWrite  //以读写的方式打开文件
QIODevice::Append     //已追加的方式打开文件,新写入文件的数据添加到文件尾部
QIODevice::Truncate   //以重写的方式打开文件,文件打开时原有内容全部清空
QIODevice::Text       //以文本的方式打开文件。读取时,将' '翻译为换行符;写入时,将行结束符转换成本地格式
*/
int t=0;
while (!file.atEnd())//判断文件是否读完
	{
		QString array = file.readLine();
        //ui.textEdit->append(array);
    t=1;
}
if (!t) {
		QMessageBox::information(this, tr("读取失败"), tr("读取拉伸体字段失败"));
	}//异常提示框

	file.close();

全部读取 file.readAll()

按行读 file.readLine(),atend()判断是否读完

对文本字段的分割

#include<QStringList>
QStringList array_cut = array.split(",");//以逗号分割

.split()函数切割,处理后的字段以列表形式存储,例如“fcnaiwdj,dasda,daw,a,awdc”,以逗号分割后为(“fcnaiwdj” , “dasda” “daw” “a” ”awdc”)

以.at()函数访问

ret.in_point = array_cut.at(0);//.at()列表访问
ret.in_ori = array_cut.at(3).toDouble();//qstring转double
/*
//QString 转 int,使用 toInt() 函数
//QString 转 double,使用 toDouble() 函数
QString qstr("100");
int num = qstr.toInt();

//int、double 转 QString,使用 QString::number() 函数
int num = 100;
QString qstr = QString::number(int);
double ret.st_ori_x = 1.0
ui.textEdit->append(QString::number(ret.st_ori_x, 'ori', 0);//最后一个参表示保留几位小数
*/

保存新改写文件内容(原文件覆盖)

QString v = ui.lineEdit->text();//获取当前打开的文件路径
	QFile file(v);
	file.setFileName(v);
	file.open(QIODevice::WriteOnly);//打开模式为只写

	QString str = ui.textEdit->toPlainText();//获取文本框内容
	file.write(str.toUtf8());//写入

	QMessageBox::information(this, tr("保存文件"), tr("文件保存成功!"));//保存操作提示框
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值