对于C++字符串 s,s[s.size()] 是否合法且始终等于 '\0'?

For a C++ string s, is s[s.size()] legal and always equal to ''?

本文关键字:字符串 C++ size 对于 是否      更新时间:2023-10-16

如果s[s.size()]=='',那么将其视为某些算法的哨兵很方便。我做了一个测试,它总是等于'',但有些书说访问s[s.size()]是非法的。

是的,这将提供对 C++11 标准指定的零值字符的引用:

要求:pos <= size()

返回:*(begin() + pos)如果pos < size(),否则引用值为 charT()T 类型的对象的引用;引用的值不得修改。

其中charT()是值构造字符,其值为零。 T大概是charT的错别字。C++14草案(大概是最终标准)说了同样的事情,但错别字是固定的。

如果你有一本书另有说法,请烧掉它或卖给你的敌人。