刚刚在对我的一个问题的评论中提出了一个有趣的论点。我的对手声称该声明""
不包含是错误的。""
我的推理是,如果""
包含另一个""
,那一个也会包含""
等等。
谁错了?
附言
我在谈论一个std::string
PSPS
我不是在谈论子字符串,但即使我将“作为子字符串”添加到我的问题中,它仍然没有任何意义。空子字符串是无意义的。如果您允许空子字符串包含在字符串中,则意味着您有无限个空子字符串。那有什么意义呢?
编辑:
我是唯一一个认为该功能有问题的人std::string::find
吗?
C ++参考清楚地说
返回值:第一个匹配的第一个字符的位置。
好的,让我们假设它有意义一分钟并运行以下代码:
string empty1 = "";
string empty2 = "";
int postition = empty1.find(empty2);
cout << "found \"\" at index " << position << endl;
输出是:found "" at index 0
废话部分:长度为0的字符串中怎么会有索引0?这是胡说八道。
为了能够有第 0 个位置,字符串必须至少有 1 个字符长。
在这种情况下,C++ 给出了一个例外,这证明了我的观点:
cout << empty2.at( empty1.find(empty2) ) << endl;
如果它真的包含一个空字符串,那么打印出来就没有问题了。