跳到主要内容

std::string data() 方法

// (1) Const version
constexpr const CharT* data() const noexcept;

// (2) Non const version
constexpr CharT* data() noexcept;

返回指向用作字符存储的底层数组的指针。

该指针使得范围:** [ data(); data() + size() ]** 有效,并且其中的值与字符串中存储的值相对应。

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

重要

如果 empty() 返回 true,则指针指向一个单个的 null 字符。

失效

data() 获取的指针可能因以下原因失效:

未定义行为
  • (1) 通过 data 的 const 重载修改字符数组会导致 未定义行为.
  • (2) 将存储在 data() + size() 处的超出末尾的 null 终止符修改为 CharT() 以外的任何值都是 未定义行为.

参数

(无)

返回值

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

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

复杂度

常数 - O(1)

备注

c_str()data() 执行相同的功能。 (自 C++11 起)

示例

Main.cpp
#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()));
}
本文源自此 CppReference 页面。可能已为改进或编辑偏好进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

std::string data() 方法

// (1) Const version
constexpr const CharT* data() const noexcept;

// (2) Non const version
constexpr CharT* data() noexcept;

返回指向用作字符存储的底层数组的指针。

该指针使得范围:** [ data(); data() + size() ]** 有效,并且其中的值与字符串中存储的值相对应。

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

重要

如果 empty() 返回 true,则指针指向一个单个的 null 字符。

失效

data() 获取的指针可能因以下原因失效:

未定义行为
  • (1) 通过 data 的 const 重载修改字符数组会导致 未定义行为.
  • (2) 将存储在 data() + size() 处的超出末尾的 null 终止符修改为 CharT() 以外的任何值都是 未定义行为.

参数

(无)

返回值

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

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

复杂度

常数 - O(1)

备注

c_str()data() 执行相同的功能。 (自 C++11 起)

示例

Main.cpp
#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()));
}
本文源自此 CppReference 页面。可能已为改进或编辑偏好进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。