Qt的main函式引數使用注意問題

2021-06-23 01:05:52 字數 1142 閱讀 6512

argc = arguments count

argv = arguments values

argc是int型,argv是字串char/char*型別,在使用argv[1]等值時,需要注意它們不是qstring型別的值。

需要轉換qstring(argv[1])或者qlatinlstring(argv[1]),然後再使用,比如與"a"比較。

注意例項:{

// if(qlatin1string(argv[1]) == "a")

if(argv[1] == "a")

{qdebug()<<"this is label 1"<

當使用if(argv[1] == "a"),輸出為:

this is label 2

equal

當使用if(qlatin1string(argv[1]) == "a"),輸出為:

this is label 1

equal

請問為什麼兩個if語句結果不同,而qlatin1string(argv[1]) 和argv[1]卻是equal ?

將qlatinlstring換成qstring結果也一樣。

問題原因:

char* a,*b

a==b是對a,b指標進行比較,不是對於a,b指標的內容進行比較

如果需要比較a,b指向的內容可以使用strcmp(a,b)

qlatin1string(a)會返回乙個qstring的型別

qstring是過載了opeartor==操作的,

qstring str,char* a

str==a實際上是比較str和a的內容

所以:if(qlatin1string(argv[1]) == "a")其實就是乙個qstring和乙個char*進行比較,這個時候比較的就是實際內容

if(argv[1] == "a")這個時候其實就是兩個char*進行比較,比較的是char*的值,這兩個值肯定是不一樣的

if(qlatin1string(argv[1]) == argv[1])這個也是乙個qstring和乙個char*進行比較,所以比較的是字串內容。

當用if

(!strcmp

(argv[1

],"a"

))時就可以了。

main函式的引數

c程式最大的特點就是所有的程式都是用函式來裝配的。main 稱之為主函式,是所有程 序執行的入口。其餘函式分為有參或無參兩種,均由main 函式或其它一般函式呼叫,若呼叫 的是有參函式,則引數在呼叫時傳遞。main f1 int a,int b f2 int m,int n 在前面課程的學習中,對m...

main函式的引數

main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...

main函式的引數

main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...