当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我在C++中看到了以下代码.它是否定义了行为?》经验,为你挑选了1个好方法。

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

#include 
char* GetPointer(std::string& s)
{
    return &s[0];
}

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



1> Nikola Benes..:

是.

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()(空字符)的字符的引用."
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有