在线文档教程
C++
字符串 | Strings

std::basic_string::data

性病:基本[医]字符串::数据

const CharT* data() const;(1)
CharT* data((2)(since C++17)

返回指向用作字符存储的基础数组的指针。指针的范围[data( data() + size())是有效的,其中的值对应于字符串中存储的值。

The returned array is not required to be null-terminated. If empty() returns true, the pointer is a non-null pointer that should not be dereferenced.(until C++11)
The returned array is null-terminated, that is, data() and c_str() perform the same function. If empty() returns true, the pointer points to a single null character.(since C++11)

data()可因下列情况而失效:

  • 将对字符串的非Const引用传递给任何标准库函数,或

  • 调用字符串上的非Const成员函数,不包括operator[](),,,at(),,,front(),,,back(),,,begin(),,,end(),,,rbegin(),,,rend()...

1%29修改通过data有未定义的行为。

2%29修改存储在data()+size()有未定义的行为。

参数

%280%29

返回值

指向基础字符存储的指针。

data()i == operator for every i in [0, size()).(until C++11)
data() + i == &operator for every i in 0, size().(since C++11)

复杂性

常量。

例外

(none)(until C++11)
noexcept specification: noexcept(since C++11)

二次

#include <algorithm> #include <cassert> #include <cstring> #include <string> int main() { std::string const s("Emplary" assert(s.size() == std::strlen(s.data()) assert(std::equal(s.begin(), s.end(), s.data()) assert(std::equal(s.data(), s.data() + s.size(), s.begin()) assert(0 == *(s.data() + s.size()) }

二次

另见

front (C++11)accesses the first character (public member function)
back (C++11)accesses the last character (public member function)
c_strreturns a non-modifiable standard C character array version of the string (public member function)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/string/basic[医]字符串/数据