我在C++中看到了以下代码.它是否定义了行为?

J. *_*rez 0 c++

这段代码是否根据C++标准定义良好?看起来有点哈哈.

#include <string>
char* GetPointer(std::string& s)
{
    return &s[0];
}
Run Code Online (Sandbox Code Playgroud)

标准是否确保该代码返回指向存储字符的数组中第一个元素的指针?

Nik*_*nes 8

是.

basic_string的元素是连续存储的,即对于basic_string s,&*(s.begin()+ n)==&*s.begin()+ n对于[0,s.size中的任何n]( )),或等效地,指向s [0]的指针可以传递给期望指向CharT []数组的第一个元素的指针的函数.

来源:http://en.cppreference.com/w/cpp/string/basic_string

  • 不你不是.请参见http://en.cppreference.com/w/cpp/string/basic_string/operator_at."如果pos == size(),则返回对值为CharT()(空字符)的字符的引用." (2认同)