首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LPTSTR测试值

LPTSTR测试值
EN

Stack Overflow用户
提问于 2014-12-09 19:51:02
回答 1查看 109关注 0票数 0

我有两个字符串要比较。我遵循这个页面的命名piper服务器/客户端示例:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365592%28v=vs.85%29.aspx

无论如何,在我的"GetAnswerToRequest“中,我定义了如下字符串

LPTSTR选项=TEXT(“这是一个测试”);

然后,我尝试将它与客户端发送的相同字符串的pchRequest参数进行比较。我找不到一个可行的比较来证明这是真的。

当我将这两个值放在调试器中时,我看到了一些不同之处。至于选项,我认为它使用的是单字节字符:

代码语言:javascript
复制
-       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值,它看起来使用了双字节字符:

代码语言:javascript
复制
-       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可能有一些额外的字符,但我不知道它们是从哪里来的。关于如何比较这两个字符串,有什么想法吗?据我所知,应该是相同的?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-09 19:53:28

您可能有一个Unicode构建,这意味着LPTSTR正在定义一个宽字符串。但是,您需要与ANSI字符串进行比较。

要做到这一点,只需删除TEXT()宏,转而使用char*。例如,

代码语言:javascript
复制
char* option = "THIS IS A TEST";

然后使用lstrcmpA()显式调用lstrcmp的ANSI版本。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27387575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档