二進位制檔案比較小巧,但是不是人可讀的格式。文字檔案是一種人可讀的格式的檔案,為了操作這種檔案,我們需要使用qtextstream類。qtextstream和qdatastream的使用類似,只不過它是操作純文字檔案的。還有一些文字格式,比如xml、html,雖然可以由qtextstream生成,但qt提供了更方便的xml操作類,這裡就不包括這部分內容了。
qtextstream會自動將 unicode 編碼同作業系統的編碼進行轉換,這一操作對程式設計師是透明的。它也會將換行符進行轉換,同樣不需要你自己去處理。qtextstream使用16位的qchar作為基礎的資料儲存單位,同樣,它也支援c++標準型別,如int等。實際上,這是將這種標準型別與字串進行了相互轉換。
qtextstream同qdatastream使用基本一致,例如下面的**將把「thomas m. disch: 334/n」寫入到 tmp.txt 檔案中:
qfile file("sf-book.txt");if (!file.open(qiodevice::writeonly))
qtextstream out(&file);
out << "thomas m. disch: "
<< 334 << endl;
out << "denmark"是我們寫入的**。我們分別寫入兩個單詞,然後試圖以與二進位制檔案讀出的格式相同的形式讀出:<< "norway";
in >> str1 >> str2;上面兩段**的 out 和 in 都是 qtextstream 型別的。雖然我們可以正常寫入,但讀出的時候,str1裡面將是 denmarknorway,str2 是空的。以文字形式寫入資料,是不能區分資料的截斷位置的。因為使用 qdatastream寫入的時候,實際上是要在字串前面寫如長度資訊的。因此,對於文字檔案,更多的是一種全域性性質的操作,比如使用 qtextstream::readline() 讀取一行,使用 qtextstream::readall() 讀取所有文字,之後再對獲得的qstring物件進行處理。
預設情況下,qtextstream 使用作業系統的本地編碼進行讀寫。不過你可以使用 setcodec() 函式進行設定,比如
stream.setcodec("utf-8");同 類似,qtextstream 也提供了一些用於格式化輸出的描述符,稱為stream manipulators。這些描述符放置在輸出內容之前,或者是使用相應的函式,用於對後面的輸出內容做格式化。具體的描述符如下
setintegerbase(int)
0讀出時自動檢測數字字首
2二進位制
8八進位制
10十進位制
16十六進製制
setnumberflags(numberflags)
showbase
顯示字首,二進位制顯示0b,八進位制顯示0,十六進製制顯示0x
forcesign
在實數前面顯示符號
forcepoint
在數字中顯示點分隔符
uppercasebase
使用大寫的字首,如0b, 0x
uppercasedigits
使用大寫字母做十六進製制數字
setrealnumbernotation(realnumbernotation)
fixednotation
定點計數表示,如0.000123
scientificnotation
科學計數法表示,如1.23e-4
smartnotation
定點或科學計數法表示,自動選擇簡潔的一種表示法
setrealnumberprecision(int)
設定生成的最大的小數字數,預設是6
setfieldwidth(int)
設定乙個欄位的最小值,預設是0
setfieldalignment(fieldalignment)
alignleft
左對齊alignright
右對齊aligncenter
中間對齊
alignaccountingstyle
符號和數字之間對齊
setpadchar(qchar)
設定對齊時填充的字元,預設是空格
比如,下面的**
out << showbase << uppercasedigits << hex << 12345678;將輸出0xbc614e。或者我們可以這樣去寫:
out.setnumberflags(qtextstream::showbase | qtextstream::uppercasedigits);qtextstream 不僅僅可以輸出到 qiodevice 上,也可以輸出到 qstring 上面,例如out.setintegerbase(16);
out << 12345678;
qstring str;本文出自 「豆子空間」 部落格,請務必保留此出處qtextstream(&str) << oct << 31 << " "
<< dec << 25 << endl;
Qt學習之路之QFile讀寫文字檔案
qfile提供了讀寫文字檔案的介面 這裡給出qfile讀寫文字檔案例項 步驟 1,建立控制台應用程式 2,開啟main.cpp,實現 如下 關閉檔案,這裡請注意,開啟檔案後,在不對檔案操作時,請關閉檔案,避免資料丟失 file.close 開啟檔案。以只寫的方式開啟檔案 以只寫的方式開啟,將會刪除原...
qt寫文字檔案換行符 Qt 文字檔案讀寫
文字檔案讀寫 二進位制檔案比較小巧,但是不是人可讀的格式。文字檔案是一種人可讀的格式的檔案,為了操作這種檔案,我們需要使用 qtextstream 類。qtextstream 和 qdatastream的使用類似,只不過它是操作純文字檔案的。還有一些文字格式,比如 xml html,雖然可以由 qt...
讀寫文字檔案
讀文字 function readtext filename string string vars string alltext string f textfile begin assignfile f,filename 將c myfile.txt檔案與f變數建立連線,後面可以使用f變數對檔案進行操...