- 1.字符串string类转为字符数组的方法
- 2.数字转化为字符串
- 3.ong long 范围是19位数字
- 4.使用transform方法实现字符串中的字符全部转换为大写字母或者全部转换为小写字母
- 5.set有对元素进行排序的功能
- 6.今天要看懂的动态规划
1.前天总结了字符数组转化为字符串的小技巧,今天总结string str转char str[]的方法,以实现两种字符串的自由转化
使用方法是先开一个字符数组char str1[str.size() + 1];
然后调用c库中strcpy函数和string 类自带函数.c_str()返回首地址 实现转换:
#include <bits/stdc++.h>
using namespace std;
int main(){
string str = "162374958";
int size = str.size();
char str1[size + 1];
strcpy(str1,str.c_str());
sort(str1,str1 + size);
str = str1;
cout << str;
return 0;
}
当然要记得不能直接使用char *p =str.c_str();这会报错的
这段代码简直酷到不行,用这种技巧,直接实现对string内部进行排序
2.数字转化为字符串
常用的三个:
2.1.itoa(100000 , str , 10)
100000是待转化数字 ,str为一个char str[]的首地址 , 10表示进制
#include <bits/stdc++.h>
using namespace std;
int main(){
string str;
char str1[11];
// itoa(100000 , str.c_str() , 10);这种用法是错误的,只允许使用char str[]接收
itoa(100000 , str1 , 10);
str = str1;
cout << str;
return 0;
}
2.2ltoa(12345678901234567, str , 10);
char *ltoa(long value,char *string,int radix);
#include <bits/stdc++.h>
using namespace std;
int main(){
string str;
char str1[100];
ltoa(12345678901234567 , str1 , 10);
str = str1;
cout << str1;
return 0;
}
亲测不好用
3.long long范围是19位数字
4.使用transform方法实现string类字符串的转化(全变为大写,或者全变为小写)
#include <bits/stdc++.h>
using namespace std;
int main(){
string str = "CarD iS noT HerE";
transform(str.begin(),str.end(),str.begin(),::toupper);
cout << str;
transform(str.begin(),str.end(),str.begin(),::tolower);
cout << str;
return 0;
}
参数说明:
一共有四个参数:
第一个参数,转化的源头的起点 str.begin()
第二个参数,转化的源头的终点str.end()
第三个参数,转化完毕得到的结果储存的首地址
第四个参数:转化向大写还是小写字母(大写为 ::toupper 小写为::tolower)
输出结果是:
CADR IS NOT HEREcard is not here
5.set有自动排序的功能
6.https://blog.youkuaiyun.com/Jammg/article/details/51589662
对于set今天才发现它也会自动排序,如果是数字,其会按照数字的大小进行排序
如果是字符串,其按照ascii码值进行排序