【Qt】文本文件读写

Qt 提供了两种读写纯文本文件的基本方法:

  1. 用 QFile 类的 IODevice 读写功能直接进行读写
  2. 利用 QFile 和 QTextStream 结合起来,用流(Stream)的方法进行文件读写。

1. 用QFile类的IODevice进行文本读写

QFile打开文本函数

#include <QFile>

	QFile::open()

参数:
	QIODevice::ReadOnly:以只读方式打开文件,用于载入文件。
	QIODevice::WriteOnly:以只写方式打开文件,用于保存文件。
	QIODevice::ReadWrite:以读写方式打开。
	QIODevice::Append:以添加模式打开,新写入文件的数据添加到文件尾部。
	QIODevice::Truncate:以截取方式打开文件,文件原有的内容全部被删除。
	QIODevice::Text:以文本方式打开文件,读取时“\n”被自动翻译为换行符,写入时字符串结束符会自动翻译为

读文本

读取文本所有数据
  readAll()

	QString fileName = "text.txt";
	
	QFile file(fileName);

	if(!file.exists()){
		return false;
	}

	if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        return false;
    }

	QString str = file.readAll();

	qDebug<<str;

	file.close();

写文本

写数据至文本
  write()

	QString fileName = "text.txt";

	QFile file(fileName);
 
 	if(!file.exists()){
		return false;
	}
 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){
	      return false;
    }

	QString str = "test";

	QByteArray array = str.toUtf8();
	
	file.write(array, array.length());
	
	file.close();

	return true;

2. 用QTextStream进行文本读写

QTextStream可以与QFile、QTemporaryFile、QBuffer、QTcpSocket和QUdpSocket等IO设备类结合使用

QTextStream的格式化函数

函数功能描述
qSetFieldWidth(int width)设置字段宽度
qSetPadChar(QChar ch)设置填充字符
qSetRealNumberPercision(int precision)设置实数精度

QTextStream的流操作符

操作符作 用 描 述
bin设置读写的整数为二进制数
oct设置读写的整数为八进制
dec设置读写的整数为十进制
hex设置读写的整数为十六进制
showbase强制显示进制前缀,如十六进制(0x)、八进制(0)、二进制(0b)
forcesign强制显示符号(+,-)
forcepoint强制显示小数点
noshowbase不显示进制前缀
noforcesign不显示符号
uppercasebase显示大写的进制前缀
lowercasebase显示小写的进制前缀
uppercasedigits用大写字母表示
lowercasedigits用小写字母表示
fixed固定小数点表示
scientific科学计数法表示
left左对齐
right右对齐
center居中
endl换行
flush清除缓冲

读文本

	QString fileName = "text.txt";
	
	QFile file(fileName);

	if(!file.exists()){
		return false;
	}

	if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        return false;
    }

	QTextStream stream(&file);

	QString str = stream.readAll();

	qDebug<<str;

	file.close();

写文本

	QString fileName = "text.txt";

	QFile file(fileName);
 
 	if(!file.exists()){
		return false;
	}
 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){
	      return false;
    }

	QString str = "test";

	QTextStream stream(&file);

	stream<<str;
	
	file.close();

	return true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值