我有两个字符串要比较。我遵循这个页面的命名piper服务器/客户端示例:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365592%28v=vs.85%29.aspx
无论如何,在我的"GetAnswerToRequest“中,我定义了如下字符串
LPTSTR选项=TEXT(“这是一个测试”);
然后,我尝试将它与客户端发送的相同字符串的pchRequest参数进行比较。我找不到一个可行的比较来证明这是真的。
当我将这两个值放在调试器中时,我看到了一些不同之处。至于选项,我认为它使用的是单字节字符:
- option,15
[0x00000000] 0x0054 unsigned short
[0x00000001] 0x0048 unsigned short
[0x00000002] 0x0049 unsigned short
[0x00000003] 0x0053 unsigned short
[0x00000004] 0x0020 unsigned short
[0x00000005] 0x0049 unsigned short
[0x00000006] 0x0053 unsigned short
[0x00000007] 0x0020 unsigned short
[0x00000008] 0x0041 unsigned short
[0x00000009] 0x0020 unsigned short
[0x0000000a] 0x0054 unsigned short
[0x0000000b] 0x0045 unsigned short
[0x0000000c] 0x0053 unsigned short
[0x0000000d] 0x0054 unsigned short
[0x0000000e] 0x0000 unsigned short对于pchRequest值,它看起来使用了双字节字符:
- pchRequest,15
[0x00000000] 0x4854 unsigned short
[0x00000001] 0x5349 unsigned short
[0x00000002] 0x4920 unsigned short
[0x00000003] 0x2053 unsigned short
[0x00000004] 0x2041 unsigned short
[0x00000005] 0x4554 unsigned short
[0x00000006] 0x5453 unsigned short
[0x00000007] 0x5a00 unsigned short
[0x00000008] 0x48c0 unsigned short
[0x00000009] 0x18cf unsigned short
[0x0000000a] 0x0000 unsigned short十六进制值的So..most在这里匹配,但是在pchRequest中有两个字符,在我的选项变量中有一个。我认为这就是lstrcmp()失败的原因。
而且,看起来pchRequest可能有一些额外的字符,但我不知道它们是从哪里来的。关于如何比较这两个字符串,有什么想法吗?据我所知,应该是相同的?
谢谢!
发布于 2014-12-09 19:53:28
您可能有一个Unicode构建,这意味着LPTSTR正在定义一个宽字符串。但是,您需要与ANSI字符串进行比较。
要做到这一点,只需删除TEXT()宏,转而使用char*。例如,
char* option = "THIS IS A TEST";然后使用lstrcmpA()显式调用lstrcmp的ANSI版本。
https://stackoverflow.com/questions/27387575
复制相似问题