1. 程式人生 > >C++17嚐鮮:string_view

C++17嚐鮮:string_view

string_view

string_view 是C++17所提供的用於處理只讀字串的輕量物件。這裡字尾 view 的意思是隻讀的檢視。

  • 通過呼叫 string_view 構造器可將字串轉換為 string_view 物件。
    string 可隱式轉換為 string_view。
  • string_view 是隻讀的輕量物件,它對所指向的字串沒有所有權。
  • string_view通常用於函式引數型別,可用來取代 const char* 和 const string&。
    string_view 代替 const string&,可以避免不必要的記憶體分配。
  • string_view的成員函式即對外介面與 string 相類似,但只包含讀取字串內容的部分。
    string_view::substr()的返回值型別是string_view,不產生新的字串,不會進行記憶體分配。
    string::substr()的返回值型別是string,產生新的字串,會進行記憶體分配。
  • string_view字面量的字尾是 sv。(string字面量的字尾是 s)

例項

#include <string>
#include <iostream>

using namespace std;

// void process(const char* sv)
// void process(const string& sv)
void process(string_view sv)
{
    cout << sv << endl;
    for (char ch : sv)
        cout << ch;
    cout
<< sv[2] << endl; } int main() { string_view sv = "hello"sv; cout << sv << endl; string_view sv2 = "hello"; cout << sv2 << endl; string_view sv3 = "hello"s; cout << sv3 << endl; string_view sv4("hello", 4); cout << sv4 << endl; process("hello"
); process("hello"s); } /* hello hello hello hell hello hellol hello hellol */