【Qt】文本文件读写

文章目录

  • Qt 提供了两种读写纯文本文件的基本方法:
    • 1. 用QFile类的IODevice进行文本读写
    • 2. 用QTextStream进行文本读写

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

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

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

QFile打开文本函数

#include 

	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;

你可能感兴趣的:(Qt,qt,qt5,c++)