歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt輸入輸出

Qt輸入輸出

日期:2017/3/1 10:49:34   编辑:Linux編程

QIODevice類是對所有讀和寫一段字節塊的一個抽象。Qt包含了下面的一些子類:

QFile

訪問本地文件系統中的文件或嵌入的資源。

QTemporaryFile

創建或訪問本地文件系統中的臨時文件。

QBuffer

從一個QByteArrary中讀數據或將數據寫入到一個QByteArray中。

QProcess

運行外部程序並處理進程間的通信。

QTcpSocket

使用TCP協議傳輸一個數據流。

QUdpSocket

通過網絡發送或接收UDP數據流。

其中,QProcess,QTcpSocket,QUdpSocket是順序文件,只能順序訪問,而QFile,QTemporaryFile, QBuffer是隨機訪問文件,可隨機訪問,可使用QIODevice::seek()來重定位文件指針。

另外,Qt也提供了兩個更高級的流處理類,可用於向任何QIODevice設備中讀或寫數據。其中QDataStream用於讀寫二進制數據,而QTextStream用於讀寫文本數據。

讀寫文本

QTextStream負責處理Unicode與系統本地編碼格式或任何其他編碼格式的轉換。QTextStream使用16-位的QChar類型作為數據的基本單元。另外,QTextStream也支持c++的基本數據類型。

使用例子如下所示:

  1. QFile file("sf-book.txt");
  2. if (!file.open(QIODevice::WriteOnly)) {
  3. cerr << "Cannot open file for writing: "
  4. << qPrintable(file.errorString()) << endl;
  5. return;
  6. }
  7. QTextStream out(&file);
  8. out << "Thomas M. Disch: " << 334 << endl;

注意:寫數據可能要容易些,但讀數據就要復雜些,如

out<< "Norway" << "Sweden";如果使用in>> str1 >> str2;讀的話,結果卻是str1=”NorwaySweden”,而str2為空。因此,讀數據必須使用專門的程序解析,QTextStream可以逐字符(QChar)地讀取。

可以設置字符編碼,如:

stream.setCodec("UTF-8");


QTextStream也支持一些流操作標志,如:

out<< showbase << uppercasedigits << hex <<12345678;

out.setNumberFlags(QTextStream::ShowBase

|QTextStream::UppercaseDigits);

out.setIntegerBase(16);

out<< 12345678;

Copyright © Linux教程網 All Rights Reserved