Qt的QTextStream

文章目錄

一、構造函數

QTextStream()


構造一個空的QTextStream對象

QTextStream(QIODevice * device)


構造一個在device上運行的QTextStream對象

QTextStream(FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)


構造一個對 fileHandle 操作的QTextStream,在內部,創建一個QFile來處理文件指針

	//QTextStream(FILE * fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite) 的例子
	QString str;
	QTextStream in(stdin);
	in >> str;

QTextStream(QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)


構造一個對string進行操作的QTextStream

QTextStream(QByteArray * array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)


構造一個對array進行操作的QTextStream。在內部,數組由QBuffer包裝

QTextStream(const QByteArray & array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)


構造一個對array進行操作的QTextStream。不管openMode中的值是什麼,數組都是隻讀的。

//QTextStream(const QByteArray & array, QIODevice::OpenMode openMode =             QIODevice::ReadOnly)  的例子
	int main(int argc, char *argv[])
	{
	    // read numeric arguments (123, 0x20, 4.5...)
	    for (int i = 1; i < argc; ++i) {
	          int number;
	          QTextStream in(argv[i]);
	          in >> number;
	          ...
	    }
	}

二、例子

三、Public Functions

1、判斷方法

是否不再讀取數據/結尾:atEnd()

bool QTextStream::atEnd() const


如果不再從QTextStream中讀取數據,則返回true;否則返回false。這與調用QIODevice::atEnd()類似,但並不相同,因爲QTextStream也考慮了它的內部Unicode緩衝區

是否啓用自動Unicode檢測:autoDetectUnicode()

bool QTextStream::autoDetectUnicode() const


如果啓用自動Unicode檢測,則返回true,否則返回false。默認情況下啓用自動Unicode檢測

是否設置爲生成UTF BOM:generateByteOrderMark()

bool QTextStream::generateByteOrderMark() const


如果在使用UTF編解碼器時將QTextStream設置爲生成UTF BOM(字節順序標記),則返回true;否則返回false。UTF BOM生成默認設置爲false

查找/跳轉到設備中的位置pos:seek(qint64 pos)

bool QTextStream::seek(qint64 pos)


查找到設備中的位置pos。成功true;否則返回false

2、普通方法

Void

重置QTextStream的格式選項:reset()

void QTextStream::reset()


重置QTextStream的格式選項,使其回到原來的構造狀態。設備、字符串和任何緩衝數據都保持不變

重置文本流的狀態:resetStatus()

void QTextStream::resetStatus()


重置文本流的狀態

刷新等待寫入設備的緩衝數據:flush()

void QTextStream::flush()


刷新任何等待寫入設備的緩衝數據。如果QTextStream操作一個字符串,這個函數什麼也不做

檢測到非空格字符:skipWhiteSpace()

void QTextStream::skipWhiteSpace()


從流中讀取和丟棄空白,直到檢測到非空格字符,或者直到atEnd()返回true。這個函數在逐個字符讀取流時非常有用。
空白字符是QChar::isSpace()返回true的所有字符

Get

返回編解碼器:codec()

QTextCodec * QTextStream::codec() const


返回當前分配給流的編解碼器

返回當前設備:device()

QIODevice * QTextStream::device() const


返回與QTextStream關聯的當前設備,如果沒有分配設備,則返回0

返回字段對齊方式:fieldAlignment()

FieldAlignment QTextStream::fieldAlignment() const


返回當前字段對齊方式

返回當前字段寬度:fieldWidth()

int QTextStream::fieldWidth() const


返回當前字段寬度

返回當前整數的基數:integerBase()

int QTextStream::integerBase() const


返回當前整數的基數。0表示在讀取時檢測基數,或在生成數字時檢測10 (decimal)

返回此流的語言環境:locale()

QLocale QTextStream::locale() const


返回此流的語言環境。默認的語言環境是C

返回當前數字標誌:numberFlags()

NumberFlags QTextStream::numberFlags() const


返回當前數字標誌

返回當前填充字符:padChar()

QChar QTextStream::padChar() const


返回當前填充字符

返回流所在的位置:pos()

qint64 QTextStream::pos() const


返回對應流位置的設備位置,或者如果發生錯誤時返回-1。

返回被讀取的數據:read(qint64 maxlen)

QString QTextStream::read(qint64 maxlen)


從流中最多讀取maxlen字符,並以QString的形式返回讀取的數據

返回流的全部內容:readAll()

QString QTextStream::readAll()


讀取流的全部內容,並將其作爲QString返回。在處理大文件時避免使用此函數,因爲它將消耗大量內存

返回讀取一行的內容:readLine(qint64 maxlen = 0)

QString QTextStream::readLine(qint64 maxlen = 0)


從流中讀取一行文本,並將其作爲QString返回。允許的最大行長度設置爲maxlen。如果流包含比這更長的行,那麼這些行將在maxlen字符後被分割並以部分形式返回

返回當前的實數表示法:realNumberNotation()

RealNumberNotation QTextStream::realNumberNotation() const


返回當前的實數表示法

返回當前的實數精度:realNumberPrecision()

int QTextStream::realNumberPrecision() const


返回當前的實數精度,或生成實數時將寫入的分數位數QTextStream

返回文本流的狀態:status()

Status QTextStream::status() const


返回文本流的狀態

返回分配給QTextStream的字符串:string()

QString * QTextStream::string() const


返回分配給QTextStream的當前字符串,如果沒有分配字符串,則返回0

Set

設置檢測Unicode編碼:setAutoDetectUnicode(bool enabled)

void QTextStream::setAutoDetectUnicode(bool enabled)


如果啓用爲真,QTextStream將嘗試通過查看流數據來檢測Unicode編碼,看看是否可以找到UTF-16或UTF-32 BOM(字節順序標記)。如果找到這個標記,QTextStream將用UTF編解碼器替換當前的編解碼器。這個函數可以與setCodec()一起使用。通常將編解碼器設置爲UTF-8,然後啓用UTF-16檢測

設置編碼:setCodec(QTextCodec * codec)

void QTextStream::setCodec(QTextCodec * codec)


將此流的編解碼器設置爲codec。編解碼器用於解碼從指定設備讀取的任何數據,並對寫入的任何數據進行編碼。默認情況下,使用QTextCodec::codecForLocale(),並啓用自動unicode檢測

設置編碼爲(字符串):setCodec(const char * codecName)

void QTextStream::setCodec(const char * codecName)


將此流的編解碼器設置爲codecName。codecName的常用值包括“ISO 8859-1”、“UTF-8”和“UTF-16”。如果不能識別編碼,什麼也不會發生

設置設備:setDevice(QIODevice * device)

void QTextStream::setDevice(QIODevice * device)


將當前設備設置爲設備。如果一個設備已經被分配,QTextStream將調用flush()之前的舊設備被替換

設置文本對齊模式:setFieldAlignment(FieldAlignment mode)

void QTextStream::setFieldAlignment(FieldAlignment mode)


將字段對齊設置爲模式。當與setFieldWidth()一起使用時,此函數允許生成文本對齊到左、右或中對齊的格式化輸出

設置字段寬度:setFieldWidth(int width)

void QTextStream::setFieldWidth(int width)


將當前字段寬度設置爲width。如果寬度爲0(默認值),則字段寬度等於生成的文本的長度

設置是否使用使用UTF編解碼器:setGenerateByteOrderMark(bool generate)

void QTextStream::setGenerateByteOrderMark(bool generate)


generate爲真,使用UTF編解碼器,QTextStream將在任何數據寫入設備之前插入BOM(字節順序標記)。如果generate爲false,則不插入BOM。在寫入任何數據之前必須調用此函數。否則,它什麼也不做

設置整數的基數:setIntegerBase(int base)

void QTextStream::setIntegerBase(int base)


將整數的基數設置爲base,用於讀取和生成數字。基數可以是2(二進制)、8(八進制)、10(十進制)或16(十六進制)。如果base爲0,QTextStream將嘗試通過檢查流上的數據來檢測base。在生成數字時,QTextStream假設基數爲10,除非基數已被顯式設置

設置語言環境:setLocale(const QLocale & locale)

void QTextStream::setLocale(const QLocale & locale)


將此流的區域設置爲locale。指定的locale用於數字及其字符串表示形式之間的轉換。
默認的語言環境是C,它是一個特例——因爲向後兼容的原因,沒有使用千位組分隔符

設置數字標誌:setNumberFlags(NumberFlags flags)

void QTextStream::setNumberFlags(NumberFlags flags)


將當前數字標誌設置爲標誌。flags是一組來自NumberFlag enum的標誌,描述了對生成的代碼進行格式化的選項(例如,是否總是寫基數或數字符號)。

設置填充字符:setPadChar(QChar ch)

void QTextStream::setPadChar(QChar ch)


將填充字符設置爲ch。默認值是ASCII空格字符(’ ')或QChar(0x20)。此字符用於在生成文本時填充字段中的空間

設置記數法:setRealNumberNotation(RealNumberNotation notation)

void QTextStream::setRealNumberNotation(RealNumberNotation notation)


將實數表示法設置爲記數法(智能表示法、固定表示法、科學表示法)。當讀取和生成數字時,QTextStream使用這個值來檢測實數的格式

設置實數的精度:setRealNumberPrecision(int precision)

void QTextStream::setRealNumberPrecision(int precision)


將實數的精度設置爲precision。此值描述生成實數時QTextStream應寫入的分數位數。
精度不能是負數。默認值是6

設置文本流狀態:setStatus(Status status)

void QTextStream::setStatus(Status status)


將文本流的狀態設置爲給定的status。
在調用resetStatus()之前,將忽略對setStatus()的後續調用

設置字符串:setString(QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)

void QTextStream::setString(QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)


使用給定的openMode將當前字符串設置爲string。如果一個設備已經被分配,QTextStream將調用flush()之前替換它

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章