命名空间
变体
操作

std::basic_string<CharT,Traits,Allocator>::data

来自 cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
成员函数
元素访问
basic_string::data
迭代器
容量
修饰符
搜索
操作
常量
非成员函数
I/O
比较
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
数值转换
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
文字
辅助类
推导指南 (C++17)

 
const CharT* data() const;
(1) (noexcept 自 C++11 起)
(constexpr 自 C++20 起)
CharT* data() noexcept;
(2) (自 C++17 起)
(constexpr 自 C++20 起)

返回一个指向作为字符存储的底层数组的指针。该指针使得范围

[data()data() + size())

(直到 C++11)

[data()data() + size()]

(自 C++11 起)

有效,并且其中的值对应于存储在字符串中的值。

返回的数组不需要以 null 结尾。

如果 empty() 返回 true,则该指针为非空指针,不应取消引用。

(直到 C++11)

返回的数组以 null 结尾,即,data()c_str() 执行相同的函数。

如果 empty() 返回 true,则该指针指向单个空字符。

(自 C++11 起)

data() 获取的指针可能会因以下情况而失效

1) 修改通过 data 的 const 重载访问的字符数组会导致未定义的行为。
2) 将存储在 data() + size() 处的越界 null 终止符修改为除 CharT() 之外的任何值会导致未定义的行为。

内容

[编辑] 参数

(无)

[编辑] 返回值

指向底层字符存储的指针。

data()[i] == operator[](i) 对于 i 中的每个 [0size())

(直到 C++11)

data() + i == std::addressof(operator[](i)) 对于 i 中的每个 [0size()]

(自 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()));
}

[编辑] 另请参阅

(DR*)
访问第一个字符
(公共成员函数) [编辑]
(DR*)
访问最后一个字符
(公共成员函数) [编辑]
返回字符串的不可修改的标准 C 字符数组版本
(公共成员函数) [编辑]
返回指向视图的第一个字符的指针
(std::basic_string_view<CharT,Traits> 的公共成员函数) [编辑]