std::basic_string<CharT,Traits,Allocator>::data
來自 cppreference.com
< cpp | string | basic_string
const CharT* data() const; |
(1) | (C++11 起無異常丟擲) (C++20 起為 constexpr) |
CharT* data() noexcept; |
(2) | (C++17 起) (C++20 起為 constexpr) |
返回指向用作字元儲存的底層陣列的指標。該指標使範圍
|
(C++11 前) |
|
(C++11 起) |
有效,並且其中的值與字串中儲存的值相對應。
返回的陣列不要求以空字元終止。 如果 empty() 返回 true,則該指標是非空指標,不應解引用。 |
(C++11 前) |
返回的陣列以空字元終止,即 如果 empty() 返回 true,則該指標指向單個空字元。 |
(C++11 起) |
透過 data()
獲取的指標可能因以下情況而失效:
- 將字串的非 const 引用傳遞給任何標準庫函式,或
- 在字串上呼叫非 const 成員函式,不包括
operator[]()
、at()、front()、back()、begin()、end()、rbegin()、rend()。
1) 透過
data
的 const 過載訪問字元陣列並進行修改具有未定義行為。目錄 |
[編輯] 引數
(無)
[編輯] 返回值
指向底層字元儲存的指標。
data()[i] == operator[](i) 對於 |
(C++11 前) |
data() + i == std::addressof(operator[](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> 的公共成員函式) |