C/C++ char数组、string 详细用法

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);

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值