当前位置: 首页 > news >正文

网站建设开票内容是什么意思wordpress输入qq评论

网站建设开票内容是什么意思,wordpress输入qq评论,珠海网络推广公司,网站建设成果QT基础教程之九Qt文件系统 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库#xff0c;提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象#xff0c;这些设备具有读写字节块的能力。下面是 I/O 设备的类图#xff08;Qt5#xff09;#…QT基础教程之九Qt文件系统 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象这些设备具有读写字节块的能力。下面是 I/O 设备的类图Qt5 QIODevice所有 I/O 设备类的父类提供了字节块读写的通用操作以及基本接口 QFileDeviceQt5新增加的类提供了有关文件操作的通用实现。 QFlie访问本地文件或者嵌入资源 QTemporaryFile创建和访问本地文件系统的临时文件 QBuffer读写QbyteArray, 内存文件 QProcess运行外部程序处理进程间通讯 QAbstractSocket所有套接字类的父类 QTcpSocketTCP协议网络数据传输 QUdpSocket传输 UDP 报文 QSslSocket使用 SSL/TLS 传输数据 顺序访问设备: 是指它们的数据只能访问一遍从头走到尾从第一个字节开始访问直到最后一个字节中途不能返回去读取上一个字节这其中QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。 随机访问设备: 可以访问任意位置任意次数还可以使用QIODevice::seek()函数来重新定位文件访问位置指针QFile、QTemporaryFile和QBuffer是随机访问设备 基本文件操作 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库提供了跨平台的文件操作能力。在所有的 I/O 设备中文件 I/O 是最重要的部分之一。因为我们大多数的程序依旧需要首先访问本地文件当然在云计算大行其道的将来这一观点可能改变。QFile提供了从文件中读取和写入数据的能力。 我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后使用setFileName()来修改。QFile需要使用 / 作为文件分隔符不过它会自动将其转换成操作系统所需要的形式。例如 C:/windows 这样的路径在 Windows 平台下同样是可以的。 QFile主要提供了有关文件的各种操作比如打开文件、关闭文件、刷新文件等。**我们可以使用QDataStream或QTextStream类来读写文件也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数。**值得注意的是有关文件本身的信息比如文件名、文件所在目录的名字等则是通过QFileInfo获取而不是自己分析文件路径字符串。 下面我们使用一段代码来看看QFile的有关操作 int main(int argc, char *argv[]){QApplication app(argc, argv);QFile file(in.txt);if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { ​ qDebug() Open file failed.; ​ return -1;} else { ​ while (!file.atEnd()) { ​ qDebug() file.readLine(); ​ }}QFileInfo info(file);qDebug() info.isDir();qDebug() info.isExecutable();qDebug() info.baseName();qDebug() info.completeBaseName();qDebug() info.suffix();qDebug() info.completeSuffix();return app.exec(); }我们首先使用QFile创建了一个文件对象。 这个文件名字是 in.txt。如果你不知道应该把它放在哪里可以使用QDir::currentPath()来获得应用程序执行时的当前路径。只要将这个文件放在与当前路径一致的目录下即可。 使用open()函数打开这个文件打开形式是只读方式文本格式。 这个类似于fopen()的 r 这样的参数。open()函数返回一个 bool 类型如果打开失败我们在控制台输出一段提示然后程序退出。否则我们利用 while 循环将每一行读到的内容输出。 可以使用QFileInfo获取有关该文件的信息。 QFileInfo有很多类型的函数我们只举出一些例子。比如 isDir()检查该文件是否是目录 isExecutable() 检查该文件是否是可执行文件等。 baseName() 可以直接获得文件名 completeBaseName() 获取完整的文件名 suffix() 则直接获取文件后缀名。 completeSuffix() 获取完整的文件后缀 我们可以由下面的示例看到baseName()和completeBaseName()以及suffix()和completeSuffix()的区别 QFileInfo fi(/tmp/archive.tar.gz); QString base fi.baseName(); // base archive QString base fi.completeBaseName(); // base archive.tar QString ext fi.suffix(); // ext gz QString ext fi.completeSuffix(); // ext tar.gz二进制文件读写 QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流这种流完全不依赖于底层操作系统、CPU 或者字节顺序大端或小端。例如在安装了 Windows 平台的 PC 上面写入的一个数据流可以不经过任何处理直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流因此我们也可以直接读写没有编码的二进制数据例如图像、视频、音频等。 QDataStream既能够存取 C 基本类型如 int、char、short 等也可以存取复杂的数据类型例如自定义的类。实际上QDataStream对于类的存储是将复杂的类分割为很多基本单元实现的。 结合QIODeviceQDataStream可以很方便地对文件、网络套接字等进行读写操作。我们从代码开始看起 QFile file(file.dat); file.open(QIODevice::WriteOnly); QDataStream out(file); out QString(the answer is); out (qint32)42;在这段代码中我们首先打开一个名为 file.dat 的文件注意我们为简单起见并没有检查文件打开是否成功这在正式程序中是不允许的。然后我们将刚刚创建的file对象的指针传递给一个QDataStream实例out。类似于std::cout标准输出流QDataStream也重载了输出重定向运算符。后面的代码就很简单了将“the answer is”和数字 42 输出到数据流。由于我们的 out 对象建立在file之上因此相当于将问题和答案写入file。 需要指出一点最好使用 Qt 整型来进行读写比如程序中的qint32。这保证了在任意平台和任意编译器都能够有相同的行为。 如果你直接运行这段代码你会得到一个空白的 file.dat并没有写入任何数据。这是因为我们的file没有正常关闭。为性能起见数据只有在文件关闭时才会真正写入。因此我们必须在最后添加一行代码 file.close(); // 如果不想关闭文件可以使用 file.flush(); 接下来我们将存储到文件中的答案取出来 QFile file(file.dat); file.open(QIODevice::ReadOnly); QDataStream in(file); QString str; qint32 a; in str a;唯一需要注意的是你必须按照写入的顺序将数据读取出来。顺序颠倒的话程序行为是不确定的严重时会直接造成程序崩溃。 那么既然QIODevice提供了read()、readLine()之类的函数为什么还要有QDataStream呢QDataStream同QIODevice有什么区别区别在于**QDataStream提供流的形式性能上一般比直接调用原始 API 更好一些。**我们通过下面一段代码看看什么是流的形式 QFile file(file.dat); file.open(QIODevice::ReadWrite); QDataStream stream(file); QString str the answer is 42; stream str;文件读写 上一节我们介绍了有关二进制文件的读写。二进制文件比较小巧却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件我们需要使用QTextStream类。QTextStream和QDataStream的使用类似只不过它是操作纯文本文件的。 QTextStream会自动将 Unicode 编码同操作系统的编码进行转换这一操作对开发人员是透明的。它也会将换行符进行转换同样不需要自己处理。QTextStream使用 16 位的QChar作为基础的数据存储单位同样它也支持 C 标准类型如 int 等。实际上这是将这种标准类型与字符串进行了相互转换。 QTextStream同QDataStream的使用基本一致例如下面的代码将把“The answer is 42”写入到 file.txt 文件中 QFile data(file.txt); if (data.open(QFile::WriteOnly | QIODevice::Truncate)) {QTextStream out(data);out The answer is 42; }这里我们在open()函数中增加了QIODevice::Truncate打开方式。我们可以从下表中看到这些打开方式的区别 枚举值 描述 QIODevice::NotOpen 未打开 QIODevice::ReadOnly 以只读方式打开 QIODevice::WriteOnly 以只写方式打开 QIODevice::ReadWrite 以读写方式打开 QIODevice::Append 以追加的方式打开 新增加的内容将被追加到文件末尾 QIODevice::Truncate 以重写的方式打开在写入新的数据时会将原有 ​ 数据全部清除游标设置在文件开头。 QIODevice::Text 在读取时将行结束符转换成 \n在写入时 将行结束符转换成本地格式例如 Win32 平台 上是 QIODevice::Unbuffered 忽略缓存 我们在这里使用了QFile::WriteOnly | QIODevice::Truncate也就是以只写并且覆盖已有内容的形式操作文件。注意QIODevice::Truncate会直接将文件内容清空。 虽然QTextStream的写入内容与QDataStream一致但是读取时却会有些困难 QFile data(file.txt);if (data.open(QFile::ReadOnly)) {QTextStream in(data);QString str;int ans 0;in str ans; }在使用QDataStream的时候这样的代码很方便但是使用了QTextStream时却有所不同读出的时候str 里面将是 The answer is 42ans 是 0。这是因为**当使用QDataStream写入的时候实际上会在要写入的内容前面额外添加一个这段内容的长度值。而以文本形式写入数据是没有数据之间的分隔的。**因此使用文本文件时很少会将其分割开来读取而是使用诸如使用 QTextStream::readLine() 读取一行 QTextStream::readAll()读取所有文本 这种函数之后再对获得的QString对象进行处理。 默认情况下QTextStream的编码格式是 Unicode如果我们需要使用另外的编码可以使用 stream.setCodec(UTF-8); 这样的函数进行设置。
http://www.hkea.cn/news/14385180/

相关文章:

  • 镇江网站制作咨询广州建网站加备案
  • 在哪里能找到做网站的人jsp 淘宝网站验证码 设计
  • 网站被k的怎么办浏览器app下载安装
  • 一键优化门户网站怎么做优化
  • oppo软件商店更新吐鲁番seo快速排名
  • 成都网站建设 雷商城手机网站制作
  • 招商加盟网站建设交易平台网站怎么做
  • 做软件好还是做网站好个人网页设计作品模板
  • iis发布php网站企业网站建设综合实训心得体会一千字
  • 长春做个人网站做不了广西建设教育学会网站
  • 保健品 网站模板建一个网站首先要怎么做
  • 丹阳市制作网站wordpress拼音
  • 西安网站开发公司电话做网站都是用ps吗
  • 为学校网站建设中企业网站建设
  • 工程造价信息价在什么网站查地方生活门户网站有哪些
  • 汉口江岸区城市建设局网站奢侈品网站排名
  • 网站301跳跳转网站有哪些
  • 英语网站开发的背景网站开发原理
  • 做局域网网站网站项目签约
  • 小微企业所得税优惠政策网站seo排名培训
  • 门户网站建设jz190h5网站开发的文献综述
  • 所有代刷平台推广上海网站建设乐云seo模板中心
  • 做英文网站要用什么字体南宁网站推广大全
  • 潍坊建设银行招聘网站南宁网站运营优化平台
  • 南宁做网站设计方案网站开发摊销多少年
  • 爱站数据官网企业网站系统详细设计
  • 购物网站怎么做优化代理注册公司行情
  • 网站流量查询站长之家培训网址
  • 网站建设应该考虑哪些问题怎么才能百度到自己的网站
  • 诸暨制作网站的公司有哪些领地免费网站开发