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

use*_*026 5 c++ string

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

Mik*_*our 9

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

要求:pos <= size().

返回:*(begin() + pos)if pos < size(),否则引用T具有值的类型的对象charT(); 参考值不得修改.

其中charT()是一个值构造的字符,其值为零.T可能是一个错字charT.C++ 14草案(可能是最终标准)说了同样的事情,并修正了拼写错误.

如果你有一本说不然的书,把它烧掉或卖给你的敌人.