!!!关于字符串的一个经验和一个小问题!!!!大家来讨论

136206 2002-07-24 04:01:15
刚才做了一个实验,在查找字符串情况下,pos+1和pos+2的效果一样,都可以得出正确的答案,但是在汉字情况下,pos+1和pos+2就不一样了,要跳一个\,如:
(1)c:\ttt\汉字\sun.txt, \\汉字情况
(2)c:\ttt\sss\sun.txt \\字符情况
假设第一个查找工作已经结实,pos=6了,用left(pos)此时结果为:c:\ttt,
这时用find("\\",pos+2),在字符情况下,可以得出答案为:c:\ttt\sss(和用pos+1一样)
在汉字情况下答案为:c:\ttt\汉字\sun.txt,而不是c:\ttt\汉字,
如果用pos+1,得出的答案就为c:\ttt\汉字.
呵呵,有意思,问题是解决了,但为什么会有这个差别呢?高手来说说理由吧
...全文
34 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sh210 2002-07-25
  • 打赏
  • 举报
回复
有道理,果然是这样
white_whan 2002-07-25
  • 打赏
  • 举报
回复
对于汉字使用pos+2时:
从Pos+2的子串中查找'\\',但由于“汉字”是双字节编码,
第一个“汉“被截为两段,因而造成“汉”的第二个字节与“字”
的第一个字节组合成一个新的汉字,而“字“的第二个字节则与后面
的'\\'组成一个新的汉字。结果是'\\'字符消失了故而查找失败。

各位可以跟踪一下源码!
136206 2002-07-25
  • 打赏
  • 举报
回复
up
136206 2002-07-25
  • 打赏
  • 举报
回复
up
sxslyy 2002-07-24
  • 打赏
  • 举报
回复
up
sh210 2002-07-24
  • 打赏
  • 举报
回复
试了一下,果然是有这个问题,原来一直没注意,谢谢了,
为什么会有这个问题呢?奇怪啊,不管汉字是由几个字节构成的,它总不是"\"啊,没理由跳过啊
绝对关注
sh210 2002-07-24
  • 打赏
  • 举报
回复
试了一下,果然是有这个问题,原来一直没注意,谢谢了,
为什么会有这个问题呢?奇怪啊,不管汉字是由几个字节构成的,它总不是"\"啊,没理由跳过啊
绝对关注

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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