在C++17中引入了std::string_view,它是一個輕量級的非擁有字符串視圖,用于查看字符串的一部分而不拷貝它。std::string_view可以用來代替const std::string&或const char*來表示一個字符串的視圖。
使用std::string_view非常簡單,只需包含< string_view>頭文件,并通過構造函數或直接賦值的方式創建一個字符串視圖對象。例如:
#include <iostream>
#include <string_view>
int main() {
std::string str = "Hello, world!";
std::string_view view(str);
std::cout << view << std::endl;
return 0;
}
上面的代碼創建了一個std::string_view對象view,它引用了字符串"Hello, world!"。通過調用view的成員函數和操作符,可以方便地對字符串進行操作,而不會引發內存拷貝。
需要注意的是,由于std::string_view不擁有字符串的內存,因此在使用它時需要確保被引用的字符串的生命周期大于或等于std::string_view的生命周期,避免出現懸掛引用的情況。