【c++】基本数据类型及常用操作

版权声明:本文为博主原创文章,转载请标明出处 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;

}

显示结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/C2681595858/article/details/80931713