- QTextStream类提供了一个方便的接口来读/写文本,可以在QIODevice、QByteArray、QStrirng上进行操作。
- 使用QTextStream的流操作符(<<),可以方便的读/写单词、行、数字。
- 对于生成文本,QTextStream对字段填充、对齐、数字格式提供了选项支持~
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "写入Resule:3.14 2.7
}
- setDevice()、setString()同样可以设置QTextStream要操作的设备或者字符串。
- 在内部,QTextStream使用了一个基于Unicode的缓冲区。主要就是用来Mingw482支持中文
使用QTextStream读取文本文件一般使用以下3种方式!
一行一行地读取
QFile file(“in.txt”);
if(! file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while(! in.atEnd())
{
//进行行读取
QString line = in.readLine();
}
一个单词一个单词地读取
QTextStream支持到QString、QByteArray、char *缓冲区的流,单词由空格分开,而且可以自动跳过前导空格。
一个字符一个字符地读取
使用QChar或者char类型的流,用于解析文件、使用独立的字符编码和行结束语义时方便处理。
skipWhiteSpace()可用来跳过空格~
默认的,当从文本流中读取数字时,QTextStream会自动检测数字的基数表示
- 如果数字以‘0x’开头,自动假定为十六进制形式。
- 1~9开头,自动假定为十进制。