string str; //sizeof(str) 为len*4
char cstr[100];//sizeof(cstr)就为100
strlen(cstr);//返回cstr实际长度
//构造
string s(6 , 'a');//快速初始化生成长度6的"aaaaaa"
string a(str);//拷贝str或者cstr都行
string s(str, 2,3);//拷贝str或者cstr从下标2开始,长度为3的部分
string s(str, 2);//拷贝str从下标为2开始的所有字符,即第3个字符及其后面的
string s(cstr, 3);//拷贝cstr的前3个字符
str.assign(6, 'a');
str.assign(str);//拷贝cstr或者str都行
str.assign(cstr, 3);//拷贝cstr的前3个字符
str.assign(str, 2,3);//str从下标为2开始的3个字符
string a(move(str));//移动构造,移动后str=NULL
//运算 比较(重载运算符)
"+, +=, ==,( > < >= <= )";//后面几种在c++20中被移除
str.compare(str2);//str>str2 返回1
//std容器操作
str.empty();
//.szie() length() resize(n) max_size()返回可分配的最大空间 capacity()返回实际分配空间大小
//.reserve(n)提前分配空间,改变capacity而size不变
//.shrink_to_fit()释放多余内存;使capacity=size,前提是size不小于string自动分配的最小空间
//迭代器string::iterator...,我用的少
string::reverse_iterator it;//反向迭代
for(it=str.rbegin(); it!=str.rend(); it++){ *it; }
//访问
int pos;//下标
str[pos];
str.at(pos);//读取失败返回异常
str.front();//.back()
str.substr(idx, n);
str.c_str();
str.data();
//插入与删除
str.pop_back();//.push_back(char)
str.append(3,'a');//后面追加"aaa"并返回
str.append(str2);// +str2
str.append(str2,3);//后面追加str2从下标为3开始所有字符
str.append(str2,3,5);//后面追加str2从下标为3开始的5个字符
//str.append(str2迭代器, str2迭代器2)
str.insert(2,3,'a');//在下标2处插入"aaa"
str.insert(2,str2);
//.insert(2,str2,3)在下标2处插入str2从下标为3开始所有字符
//.insert(2,str2,3,n)
//str.insert(str迭代器, 'a')
//str.insert(str迭代器,3,'a') 插入"aaa"
str.clear();
str.erase();//默认==clear()
//erase(a,n) 从下标2开始n个字符
//erase(迭代器,迭代器2) 左闭右开
//替换
str.replace(idx, n, str2)
str从下标idx开始的n个字符 被str2替换
str.replace(idx, n, str2,idx2,n2) idx,n可以用迭代器表示
//查找
str.find(str2);//返回首字符的idx, 没找到返回string::npos
//.rfind(); 从后往前找到的第一个匹配字串首字符的idx
str.find_first_of("ABCD");//寻找等于给定字符序列中字符之一的首个字符。
str.find_first_not_of("ABCD");//寻找不等于给定字符序列中字符之一的首个字符。
str.find_last_of(str2);//从后往前找
str.find_last_not_of(str2);
//string转化
//int 转化 string; double转化后会有6位小数
string a= to_string(12345);
str = "12345A";
//stoi("1234");返回 string转化int,只能读取符合规则的string,不符合时停止
size_t n;
stoi(str, &n, 8);//n为位数,按8进制规则读取
//stod()
//stof()
//哈希值
hash<string> hs;
hs(str);
C/C++ char数组、string 详细用法
于 2024-01-09 00:30:06 首次发布