C++17嚐鮮:string_view
阿新 • • 發佈:2019-02-14
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
*/