标签:c_str clu Golan 字符串 开始 连续 com typename 迭代
#include<string> string compose(const string& name, const string& domain) { return name + ‘@‘ + domain; // 采用移动构造函数返回,不存在拷贝,会很高效 } s += "abc"; ////追加字符 string m = name.substr(2,5); //提取子字符串 name.replace(0, 5, "abc"); // 替换从0开始、长度为5的子串为"abc" name.c_str(); //转化为C风格字符串,返回指向name字符的指针 auto s = "cat"s; // std::string类型 auto p = "dog"; //C风格字符串:const char*类型
字符串string的实现:
template<typename Char> class basic_string { // Char类型的字符串 } using string = basic_string<char>; //定义别名 //用户可定义任意字符类型的字符串,如中文简体 using Cstring = basic_string<Cchar>;
字符串视图string_view:
它基本上就是一个(指针,长度)对,表示一个字符序列,就类似golang中切片的概念。
可通过string_view实现对一个连续字符序列的访问,其类似于指针或引用,因为它并不拥有它所指向的字符。
string_view是其字符的只读视图。
String cat(string_view sv1, string_view sv2) { string res(sv1.length()+sv2.length()); char* p = &res[0]; for (char c: sv1) *p++ = c; copy(sv2.begin(), sv2.end(), p); //类似迭代器 } string a = "abc"; auto s1 = cat(a, "mcd"); // string和const char* auto s2 = cat("abd", "ddd"sv); // const char* 和string_view auto s3 = cat({&king[0],2}, "hdd"sv); //abhdd
标签:c_str clu Golan 字符串 开始 连续 com typename 迭代
原文地址:https://www.cnblogs.com/share-ideas/p/11921297.html