版权声明:本文为博主原创文章,转载请标明出处 https://blog.csdn.net/C2681595858/article/details/80931713
一、类型转换
1、从string中划分sub string.
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str = "$123456";
string substr = str.substr(1,4);
cout<<substr;
}
//最终输出是 1234
2、将string类型转换为char*类型。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str = "123456";
char cstr[10];
strcpy(cstr, str.c_str());
cout<<cstr;
}
//这里必须要确定char类型数组的大小,也就是说`char cstr[10];`这里的10是必不可少的。
3、将string类型转换为int类型。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str = "123456";
char cstr[10];
strcpy(cstr, str.c_str());
int iii = atoi(cstr);
cout<<iii;
}
//这里需要注意的是atoi中必须是char*类型,所以在将string转换为int之前,首先应该转换为char*类型
4、将int类型转换为string类型
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int iii = 110;
string str = to_string(iii);
cout<<str;
}
5、将string按照特定字符划分成sub string。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string aa = "11,22,33";
char a[10] , *b, *c, *d;
strcpy(a, aa.c_str());
const char seg[] = ",";
b = strtok(a,seg);
c = strtok(NULL,seg);
d = strtok(NULL,seg);
cout<<b<<c<<d;
}
//需要注意的是,这里的被划分的应该是char*类型,然后返回的子字符串也是char*类型,且第一次划分时传入了被划分的字符串,后面就不需要在传入,直接传入NULL就可以。
6、将int转换成其他进制形式的数再转换成char*类型
#include <iostream>
using namespace std;
int main()
{
int iii = 17;
char sstr[5];
_itoa(iii, sstr, 5);//第三个参数标明了将要转化成什么进制,如果iii是负数要特别注意,这个函数不是很好用
cout<<sstr;
return 0;
}
7、将其他进制的字符串形式的数转换成另一种进制的数的字符串。
#include <iostream>
using namespace std;
int main()
{
char ch[32];
ltoa(strtol("1c",'\0',16),ch,2);
printf("%s",ch);
return 0;
}
//strtol,将字符串转换成16进制数。
//ltoa,将16进制数转换成2进制字符串,若输出的字符串前面有0那么都将被省略掉,直到1出现才开始保存
二、特定格式的输出
1、setw和setfill设置输出宽度
注意在每次输出之前都要设定宽度,就是说setw只在当前这一次输出中起作用后续就失效了。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout<<setfill('0')<<setw(5)<<"123"<<setw(5)<<"11"<<endl;
cout<<setw(5)<<"123"<<setw(5)<<"11"<<endl;
cout<<setw(5)<<"12";
}
显示结果:
2、left和right向左向右对齐
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout<<setfill(' ')<<setw(5)<<left<<"123"<<setw(5)<<right<<"11"<<endl;
}
显示结果: