名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | string‎ | basic_string
 
 
 
std::basic_string
 
const CharT* data() const;
(1) (C++11 起無異常丟擲)
(C++20 起為 constexpr)
CharT* data() noexcept;
(2) (C++17 起)
(C++20 起為 constexpr)

返回指向用作字元儲存的底層陣列的指標。該指標使範圍

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

(C++11 前)

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

(C++11 起)

有效,並且其中的值與字串中儲存的值相對應。

返回的陣列不要求以空字元終止。

如果 empty() 返回 true,則該指標是非空指標,不應解引用。

(C++11 前)

返回的陣列以空字元終止,即 data()c_str() 執行相同的功能。

如果 empty() 返回 true,則該指標指向單個空字元。

(C++11 起)

透過 data() 獲取的指標可能因以下情況而失效:

1) 透過 data 的 const 過載訪問字元陣列並進行修改具有未定義行為。
2) 將儲存在 data() + size() 處的超尾空終止符修改為 CharT() 以外的任何值具有未定義行為。

目錄

[編輯] 引數

(無)

[編輯] 返回值

指向底層字元儲存的指標。

data()[i] == operator[](i) 對於 [0size()) 中的每個 i

(C++11 前)

data() + i == std::addressof(operator[](i)) 對於 [0size()] 中的每個 i

(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*)
訪問第一個字元
(public member function) [編輯]
(DR*)
訪問最後一個字元
(public member function) [編輯]
返回字串的不可修改的標準 C 字元陣列版本
(public member function) [編輯]
返回指向檢視首字元的指標
(std::basic_string_view<CharT,Traits> 的公共成員函式) [編輯]