我在我的问题的评论中有了一个有趣的争论。我的对手声称,语句""
不包含""
是错误的。
我的理解是,如果""
包含另一个""
,那么那个也会包含""
,以此类推。
谁错了?
P.S.
我在谈论一个std::string
P.S. P.S
我不是在谈论子字符串,但是即使我在我的问题中添加“作为子字符串”,它仍然没有意义。一个空的子字符串是无意义的。如果允许在字符串中包含空子字符串,那么这意味着你有一个无穷多的空子字符串。这有什么意义呢?
编辑:
我是唯一一个认为std::string::find
函数存在问题的人吗?
C++参考文献明确说明
返回值:第一个匹配项的第一个字符的位置。
好吧,假设有道理,并运行以下代码:
string empty1 = "";
string empty2 = "";
int postition = empty1.find(empty2);
cout << "found \"\" at index " << position << endl;
输出结果为:
在索引 0 处找到 ""
无意义的部分:一个长度为 0 的字符串怎么可能有索引 0?这是无意义的。要使字符串具有第 0 个位置,它必须至少包含 1 个字符。
而在这种情况下,C++ 给出了一个异常,证明了我的观点。
cout << empty2.at( empty1.find(empty2) ) << endl;
如果它真的包含空字符串,那么打印它出来就没有问题了。