我正在写一个代码,用于比较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“'是一样的,为什么我们需要两个版本? –