-2

2つのQString配列をQtおよびC++と比較したいのですが、これを試しましたが、うまくいきませんでした(実際にはアプリケーションがクラッシュします...):

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

}

そして、配列の要素に値を割り当てる必要がありますが、私も機能しません:

ArrayOne[nb] = ArrayTwo[nb];

これに到達するには:

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

ありがとう !

4

2 に答える 2

1

nb値はおそらくQStringのサイズの範囲外です。つまり、nb>ArrayOne.size-1です。

于 2012-11-13T21:15:08.460 に答える
1

あなたはあなたが持っていると言います:

QString ArrayOne;

これが当てはまる場合は、位置で、文字列配列ではなく、2つの文字列の文字を比較しているだけですnb。また、QStringoperator[]は範囲をチェックしないため、nbがQStringの長さを超える場合、特にQString::operator[]...によって返される無効な参照に割り当てると、プログラムがクラッシュする可能性があります。

したがって、明確にするために、コードがクラッシュする可能性があります。nb >= ArrayOne.length()

于 2012-11-13T21:24:22.603 に答える