我正在寫一個代碼,用於比較LPSTR和wchar_t類型的兩個字符串。字符串的內容相同,但輸出顯示字符串不同。以下是完整代碼的截圖。爲什麼使用wchar_t時兩個內容相同的字符串不同?
#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'的調用是比較單字節字符。第一個字符串由單字節字符組成,是第二個寬度爲2個字節的字符。它們不是同一件事。在進行比較之前,您需要將字符串轉換爲相同的存儲格式。 – Baldrick
如果''A「'和'L」A「'是一樣的,爲什麼我們需要兩個版本? –