LPSTR型とwchar_t型の2つの文字列を比較するコードを記述しています。文字列の内容は同じですが、出力は文字列が異なることを示しています。以下は完全なコードのスクリーンショットです。wchar_tの使用中に同じ内容の2つの文字列が異なるのはなぜですか?
#include <iostream>
#include <string.h>
#include <wtypes.h>
using namespace std;
int main(int argc, char** argv)
{
LPSTR str1= "Abcdef123456";
wchar_t *str2 = L"Abcdef123456";
if(!strcmp((char *)str1, (char *)str2))
{
cout<<"same";
}
else
{
cout<<"diff";
}
return 0;
}
実行時の出力はdiffです。私は出力が同じでなければならないと思う。助けてください。
なぜ彼らは同じであるべきだと思いますか? – DeiDei
'strcmp'を呼び出すと、1バイト文字が比較されます。最初の文字列は1バイト文字で構成され、2番目の文字は2バイト文字です。彼らは同じことではありません。比較を行う前に、ストリングを同じストレージ形式に変換する必要があります。 – Baldrick
'' A ''と' 'L" A "'が同じだった場合、どうして2つのバージョンが必要でしょうか? –