文章目錄
- 一、構造函數
- 二、例子
- 三、Public Functions
- 1、判斷方法
- 是否不再讀取數據/結尾:atEnd()
- 是否啓用自動Unicode檢測:autoDetectUnicode()
- 是否設置爲生成UTF BOM:generateByteOrderMark()
- 查找/跳轉到設備中的位置pos:seek(qint64 pos)
- 2、普通方法
- Void
- Get
- 返回編解碼器:codec()
- 返回當前設備:device()
- 返回字段對齊方式:fieldAlignment()
- 返回當前字段寬度:fieldWidth()
- 返回當前整數的基數:integerBase()
- 返回此流的語言環境:locale()
- 返回當前數字標誌:numberFlags()
- 返回當前填充字符:padChar()
- 返回流所在的位置:pos()
- 返回被讀取的數據:read(qint64 maxlen)
- 返回流的全部內容:readAll()
- 返回讀取一行的內容:readLine(qint64 maxlen = 0)
- 返回當前的實數表示法:realNumberNotation()
- 返回當前的實數精度:realNumberPrecision()
- 返回文本流的狀態:status()
- 返回分配給QTextStream的字符串:string()
- Set
- 設置檢測Unicode編碼:setAutoDetectUnicode(bool enabled)
- 設置編碼:setCodec(QTextCodec * codec)
- 設置編碼爲(字符串):setCodec(const char * codecName)
- 設置設備:setDevice(QIODevice * device)
- 設置文本對齊模式:setFieldAlignment(FieldAlignment mode)
- 設置字段寬度:setFieldWidth(int width)
- 設置是否使用使用UTF編解碼器:setGenerateByteOrderMark(bool generate)
- 設置整數的基數:setIntegerBase(int base)
- 設置語言環境:setLocale(const QLocale & locale)
- 設置數字標誌:setNumberFlags(NumberFlags flags)
- 設置填充字符:setPadChar(QChar ch)
- 設置記數法:setRealNumberNotation(RealNumberNotation notation)
- 設置實數的精度:setRealNumberPrecision(int precision)
- 設置文本流狀態:setStatus(Status status)
- 設置字符串:setString(QString * string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
一、構造函數
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()之前替換它