2012-11-13 56 views
-2

我想比較兩個QString的陣列使用Qt和C++,我想這一點,但它dosent工作,(其實我的應用程序崩潰...):如何比較兩個QString的陣列的Qt C++

if(ArrayOne[nb] != ArrayTwo[nb]){ 

} 

然後我需要在我的數組的元素賦值,但我dosent工作過:

ArrayOne[nb] = ArrayTwo[nb]; 

爲了達到這一點:

if(ArrayOne[nb] != ArrayTwo[nb]){ 
ArrayOne[nb] = ArrayTwo[nb]; 
} 

謝謝!

+0

ArrayOne和ArratTwo是如何聲明的?什麼是nb? –

+0

nb是一個int,arrayone和兩個聲明如下:QString ArrayOne; – Random78952

+0

另外,「不起作用」究竟意味着什麼?它不會編譯?它是否編譯,但行爲與預期不同?不同的是如何? –

回答

1

您的nb值可能超出了您QString大小的範圍。即,nb> ArrayOne.size-1。

+0

nb值在1和10之間 – Random78952

+1

但是ArrayOne的內容是什麼? – Phlucious

1

你說你有:

QString ArrayOne; 

如果這是真的,那麼你只是比較字符兩個字符串,而不是字符串數組,在nb位置。和的QString的operator[]不檢查範圍,因此,如果nb比的QString的長度更大,程序很可能會崩潰,特別是如果你分配到由QString::operator[]返回無效的參考...

所以,要清楚:你的代碼可能崩潰,因爲nb >= ArrayOne.length()