Namespaces
Variants

std::basic_string_view<CharT,Traits>:: data

From cppreference.net
constexpr const_pointer data ( ) const noexcept ;
(自 C++17 起)

返回指向底层字符数组的指针。该指针满足范围 [ data ( ) , data ( ) + size ( ) ) 有效且其中的值对应于视图中的值。

目录

参数

(无)

返回值

指向底层字符数组的指针。

复杂度

常量。

注释

std::basic_string::data() 和字符串字面量不同, std::basic_string_view::data() 返回的指针所指向的缓冲区不保证以空字符结尾,例如子字符串视图(如来自 remove_suffix 的视图)。因此,将 data() 传递给仅接受 const CharT * 参数并期望空终止字符串的例程通常是错误的。

示例

#include <cstring>
#include <cwchar>
#include <iostream>
#include <string>
#include <string_view>
int main()
{
    std::wstring_view wcstr_v = L"xyzzy";
    std::cout << std::wcslen(wcstr_v.data()) << '\n';
    // 正确:底层字符数组以空字符结尾
    char array[3] = {'B', 'a', 'r'};
    std::string_view array_v(array, sizeof array);
    // std::cout << std::strlen(array_v.data()) << '\n';
    // 错误:底层字符数组不以空字符结尾
    std::string str(array_v.data(), array_v.size()); // 正确
    std::cout << std::strlen(str.data()) << '\n';
    // 正确:std::string 的底层字符数组始终以空字符结尾
}

输出:

5
3

参见

访问首字符
(公开成员函数)
访问末字符
(公开成员函数)
返回指向字符串首字符的指针
( std::basic_string<CharT,Traits,Allocator> 的公开成员函数)