0

ベクトルに格納されている 2 つの文字列を比較する必要があります。mingw-g++ コンパイラ (バージョン 4.4.1) を使用する Windows では、比較は正常に機能します。

しかし、g++ バージョン 4.7.2 を実行している Ubuntu で同じことをしようとすると、奇妙な問題が発生します。以下にそれらをリストしました。

  1. 要素を個別に印刷しようとすると、正しい出力が得られ、両方の文字列が同じになります。

  2. しかし、== 演算子または strcmp() を使用してそれらを比較しようとすると、それらは同じでも等しくないと言っています。

  3. 上記で比較される要素を印刷しようとすると、最初の文字列の値が文字列に置き換えられます。コードを以下に示します。理想的には、if ループは実行されるべきではありませんが、それでも実行され、v1[i] の代わりにガベージ値が出力されます。

vector<string> v1 = r1->GetSchema().GetAttrTypes();
vector<string> v2 = r2->GetSchema().GetAttrTypes();
for(i=0; i<v2.size();i++)
    if(v1[i] != v2[i])
        cout << v1[i] << " " << v2[i] << " awdsd" << endl;

この種のエラーを何を検索すればよいかわかりません。WindowsとUbuntuの両方で、同じファイルから文字列を取得し、ベクトルに保存しています。

編集:ここにコードの一部を添付しています。関数の右側は、文字列のベクトルを返します。classe のコードは非常に大きなコードなので、上に貼り付けることができません。

4

2 に答える 2