QLatin1String類的說明

2021-08-01 23:16:11 字數 1801 閱讀 6845

qlatin1string類對us-ascii/latin-1編碼的字串進行了簡單封裝,可理解為

關於const char*的乙個淺封裝。

許多qstring的成員函式都用const char*代替qstring作為引數實現過載。這包含拷貝建構函式,賦值操作,比較操作和其他不同的函式,比如insert(), replace(), indexof(). 這些函式都做了優化以避免在函式呼叫時從const char*中構造乙個qstring物件。例如,假定str是qstring物件,

if

(str ==

"auto"||

str ==

"extern"||

str ==

"static"||

str ==

"register"

)

上面的**執行會比下面的**執行快很多

if

(str ==

qstring

("auto")|

|str ==

qstring

("extern")|

|str ==

qstring

("static")|

|str ==

qstring

("register"

))

因為在第二部分的**中會構造四個臨時的qstring物件,並複製字串中的值。

在程式中定義了

qt_no_cast_from_ascii

的應用程式是無法使用qstring的const char*相關的api函式,因此qt提供了qlatin1string類來更高效的利用const char*的型別,它就是乙個關於const char*的乙個淺封裝。如果利用qlatin1string類來寫上述的程式就是

if

(str ==

qlatin1string

("auto")|

|str ==

qlatin1string

("extern")|

|str ==

qlatin1string

("static")|

|str ==

qlatin1string

("register"

)

雖然在**輸入的時候有點長,但是它的執行效率和上面第一段的**一樣,同時也比使用qstring::fromlatin1()轉換來的快。

得益於qstring(const qlatin1string&)這個建構函式,qlatin1string可以在任何需要qstring物件的地方使用,比如:

qlabel

*label

=new

qlabel

(qlatin1string

("mod"),

this

);

qstring str = "hello" 報錯:

在程式中定義了qt_no_cast_from_ascii的應用程式是無法使用qstring的const char*相關的api函式,因此qt提供了qlatin1string類來更高效的利用const char*的型別,它就是乙個關於const char*的乙個淺封裝。

只要在 .pro檔案裡面

defines += \

qt_no_cast_from_ascii

char*就不能轉換成qstring,這時候就可以用 qlatin1string來代替在所有需要qstring的地方。

QLatin1String類的學習

qlatin1string類對us ascii latin 1編碼的字串進行了封裝。許多qstring的成員函式都用const char 代替qstring作為引數實現過載。這包含拷貝建構函式,賦值操作,比較操作和其他不同的函式,比如insert replace indexof 這些函式都做了優化以...

QLatin1String類的說明

qlatin1string類對us ascii latin 1編碼的字串進行了簡單封裝,可理解為關於const char 的乙個淺封裝。許多qstring的成員函式都用const char 代替qstring作為引數實現過載。這包含拷貝建構函式,賦值操作,比較操作和其他不同的函式,比如insert ...

處理String類常用的方法1

public class dome string str new string ch system.out.println str char qwe str.tochararray 此為陣列轉化為字串,然後字串又轉回陣列的方法。public static void main string args ...