gpt4 book ai didi

c++ - 空字符串是否包含 C++ 中的空字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:53 24 4
gpt4 key购买 nike

刚刚在对我的一个问题的评论中提出了一个有趣的论点。我的对手声称声明 "" does not contain "" 是错误的。

我的推理是,如果 "" 包含另一个 "",那么那个也会包含 "" 等等。

谁错了?

附言

我说的是 std::string

附言附言

我不是在谈论子字符串,但即使我在我的问题中添加“作为子字符串”,它仍然没有任何意义。空子串是废话。如果允许空子字符串包含在字符串中,则意味着您有无限个空子字符串。这有什么意义?

编辑:

难道只有我认为 std::string::find 函数有问题吗?

C++ 引用中清楚地说明了

Return Value: The position of the first character of the first match.

好的,让我们暂时假设它有意义并运行这段代码:

string empty1 = "";
string empty2 = "";

int postition = empty1.find(empty2);

cout << "found \"\" at index " << position << endl;

输出是:found ""at index 0

废话部分:长度为0的字符串怎么会有索引0?这是胡说八道。

为了能够第 0 个位置,字符串必须至少有 1 个字符长。

C++ 在这种情况下给出了一个异常(exception),这证明了我的观点:

cout << empty2.at( empty1.find(empty2) ) << endl;

如果它真的包含一个空字符串,打印出来就没有问题。

最佳答案

这取决于你所说的“包含”是什么意思。

空字符串是空字符串的子字符串,因此在这个意义上是包含的。

另一方面,如果将字符串视为字符的集合,则空字符串不能包含空字符串,因为它的元素是字符,而不是字符串。

关于集合,集合

{2}

是集合的子集

A = {1, 2, 3}

{2} 不是 A成员 - A 的所有成员都是数字,不套。

同理,{}{} 的子集,但 {} 不是 { 中的元素}(不可能是因为它是空的)。

所以你们都是对的。

关于c++ - 空字符串是否包含 C++ 中的空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com