赞
踩
在上一节中的QFile直接支持文本文件和数据文件的读写,具体见https://blog.csdn.net/tqs_1220/article/details/82193502。
按照之前的方式可以直接通过QFile类将浮点数写入到文件。
QFile file("C:/Users/song8023/Desktop/test.hex");
if(file.open(QIODevice::WriteOnly))
{
QString str = "TQSong";
double value = 3.14;//将要写入一个浮点数
file.write(str.toStdString().c_str());//将str先转成标准的字符串类型,然后再转成字节数据类型
file.write(reinterpret_cast<char*>(&value), sizeof(value));
file.close();
}
if(file.open(QIODevice::ReadOnly))
{
QString str;
double value;//保存读取的数据
str = QString(file.read(6));//读取前6个字符,此时文件指针会发生偏移
file.read(reinterpret_cast<char*>(&value), sizeof(value));
qDebug() << str;
qDebug() << value;
file.close();
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
这种操作固然可以成功,但麻烦的是需要计算写入的数据的长度和读取数据时候的文件指针位置,一旦计算出错得到的结果就会和预期不一致;另一点麻烦在于写入之前需要进行一个转换步骤,转换成QFile支持写入的类型,在读取时也需要转换操作。仅凭这两点使得这种方法是不愉快的。
所以,Qt为了使得操作简便,提供了辅助类使得我们在文本文件和数据文件的操作上变得简单。
- QTextStream:写入的数据全部转换为可读的文本
- QDataStream:写入的数据根据类型转换成对应的二进制数据
QFile file("C:/Users/song8023/Desktop/test.txt");
QTextStream in(&file);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
in << "TQSong" << endl;//按流的方式写入
in << 3 << '+' << 2 << '-' << 5 << '=' << 3+2-5 << endl;
file.close();
}
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream out(&file);
while(!out.atEnd())//判断到没到文件末尾
{
qDebug() << out.readLine();//按行读取
}
file.close();
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
QFile file("C:/Users/song8023/Desktop/data.hex");
QDataStream in(&file);
if(file.open(QIODevice::WriteOnly))
{
in << QString("TQSong");
in << QString("Hello World");
in << 3.14;
file.close();
}
if(file.open(QIODevice::ReadOnly))
{
QDataStream out(&file);
QString str1 = "";
QString str2 = "";
double value = 0;
out >> str1;//将数据流输出到指定位置
out >> str2;
out >> value;
file.close();
qDebug() << str1;
qDebug() << str2;
qDebug() << value;
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
void setVersion(int v)//设置版本号
在Qt4.7中给出下列版本型号
QDataStream::Qt_1_0 1 Version 1 (Qt 1.x)
QDataStream::Qt_2_0 2 Version 2 (Qt 2.0)
QDataStream::Qt_2_1 3 Version 3 (Qt 2.1, 2.2, 2.3)
QDataStream::Qt_3_0 4 Version 4 (Qt 3.0)
QDataStream::Qt_3_1 5 Version 5 (Qt 3.1, 3.2)
QDataStream::Qt_3_3 6 Version 6 (Qt 3.3)
QDataStream::Qt_4_0 7 Version 7 (Qt 4.0, Qt 4.1)
QDataStream::Qt_4_1 Qt_4_0 Version 7 (Qt 4.0, Qt 4.1)
QDataStream::Qt_4_2 8 Version 8 (Qt 4.2)
QDataStream::Qt_4_3 9 Version 9 (Qt 4.3)
QDataStream::Qt_4_4 10 Version 10 (Qt 4.4)
QDataStream::Qt_4_5 11 Version 11 (Qt 4.5)
QDataStream::Qt_4_6 12 Version 12 (Qt 4.6)
QDataStream::Qt_4_7 Qt_4_6 Qt_4_8 = Qt_4_7 Same as Qt_4_6.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。