3
|
David Sykes · 技术社区 · 15 年前 |
![]() |
1
10
查看规范,我认为您的实现中可能有一个bug。
|
![]() |
2
4
比较字符串::find()和字符串::copy()。(在N2798中,这是21.3.7.2和21.3.6.7,第686/687页),两者都有立场论点。然而,只有string::copy有一个“requires:pos<=size()”子句。因此,字符串::find可以 不 需要pos<=size()。 从那时起,查尔斯·贝利就有了正确的逻辑。看看有效返回值的范围,很明显只有字符串::npos才是与需求匹配的返回值。返回的任何其他值小于string::npos,失败21.3.7.2/1。 N2798=08-0308,版权所有ISO/IEC:
21.3.7.2
1效果:确定最低位置
|
![]() |
3
3
定义
|
![]() |
4
3
您可能会发现,在这种情况下,自由函数std::search更容易使用。例如。
|
![]() |
5
1
如果通过,则未定义行为
[更新]
但是也请看下面的评论(我不是ISO标准的专家,我根据我的文档限制了我的期望)。
STL实现通常使用明显超出范围的值(例如(
所以你需要从0开始检查
|
![]() |
6
0
您应该使用字符串的长度作为起始位置。 |
![]() |
7
0
将std::string::npos作为第二个要查找的参数传递意味着“在字符串中std::string::npos位置上或之后开始查找”。 很明显这不是你想要的。 编辑: 这可能会实现您最初的预期:
我没有测试过它,但它应该可以工作,你可能更喜欢彼得森风格,因为它更可读。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |