关于字符串比较的奇怪问题

qihuachun001 2003-10-15 02:41:43
AnsiString aStr = .......//从socket中获得数据
//。。。。。。。
if(aStr.SubString(11, 1) == "1") haveData = 1;
else haveData = 0;
//。。。。。。

程序开始很正常。(该程序中有双线程)
有时很奇怪, 明明获的aStr.SubString(11,1)的数据为“1”,打印出来也是“1”,但就是if语句中它不认,会执行else语句。奇怪。更可恶的是,在提取aStr.SubString(3,8), aStr.SubString(12,1)却是正常的。

各位给评个理,看看到底是什么问题。
...全文
20 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerhohoo 2003-10-16
  • 打赏
  • 举报
回复
从socket中获得数据有时含有\0,先消除这类字符,然后在进行处理.
qihuachun001 2003-10-16
  • 打赏
  • 举报
回复
晕,试过了,不行。

各位,再想想办法。
hy1080 2003-10-15
  • 打赏
  • 举报
回复
试一下
AnsiString aStr = .......//从socket中获得数据
//。。。。。。。
if(aStr.SubString(11, 1)._c_str() == '1') haveData = 1;
else haveData = 0;
//。。。。。。
ljianq 2003-10-15
  • 打赏
  • 举报
回复
直接这样吧:

if(aStr[1]== '1') haveData = 1;
fatwave 2003-10-15
  • 打赏
  • 举报
回复
转成Int型你再比较一下
if(int(aStr.SubString(11, 1)) == 1) haveData = 1;
sfemil 2003-10-15
  • 打赏
  • 举报
回复
是不是宽字符引起的问题.我不是太清楚,猜猜而已.使用WideString试试.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧