首页
社区
课程
招聘
[旧帖] CString::Find的问题 0.00雪花
发表于: 2011-4-11 23:13 5538

[旧帖] CString::Find的问题 0.00雪花

2011-4-11 23:13
5538
CString str("The stars are aligned");
int n = str.Find('e',5);
ASSERT(n == 12)

如果我改成
CString str("The stars are aligned");
int n = str.Find('e',12);
ASSERT(n == 12)

可是我看msdn中:
nStart 字符串中开始搜索的字符的索引,如果是0,则是从头开始搜索。如果nStart不是0,则位于nStart处的字符不包括在搜索之内
但是我怎么试验着是包括在搜索范围之内

请教?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
那就  nStart - 1嘛。
2011-4-11 23:57
0
雪    币: 88
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
nStart

The index of the character in the string to begin the search with, or 0 to start from the beginning. The character at nStart is excluded from the search if nStart is not equal to 0.

原文是说不包含,不过我也做了试验,是包含的。那就是包含着用吧,呵呵。
2011-4-12 08:54
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也是在VC6的编译器中实验的,结果和msdn中不一样,所以不知道是我做错了还是咋的?
2011-4-14 22:54
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
意思是:0就表示从字符开始搜索,如果是1就表示排除第一个字符“T”(从第2个字符)开始搜索,如果是12则表示排除12个字符(从第13个字符)开始,而str.Find('e',12)函数返回的结果是从0开始,n=12其实表示的是第13个字符“e”,如果用int n = str.Find('e',13),n就等于19而不是12。
总结:原因是参数和返回值的起点不一致,一个是从1开始计算,一个是从0开始计算
2011-4-15 06:27
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
还是用“12345”这种字符串好看出来结果,省得查数,用Find查找1时返回值是0,返回值应该是偏移量
2011-4-26 03:13
0
游客
登录 | 注册 方可回帖
返回
//