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位置上或之后开始查找”。 很明显这不是你想要的。 编辑: 这可能会实现您最初的预期:
我没有测试过它,但它应该可以工作,你可能更喜欢彼得森风格,因为它更可读。 |
|
EVA KAO · C++std线程和列表分段错误(内核转储) 7 年前 |
![]() |
Remi.b · “调整大小”是否会有降低病媒容量的风险? 7 年前 |
![]() |
kdog · 为什么std::string不接受空指针? 7 年前 |
![]() |
Francis Cugler · 删除Windows库依赖项 7 年前 |
![]() |
BoshWash · 不同编译器中std容器的不同noexcept属性 7 年前 |