Bootstrap

C++ ——补充知识点

1、格式化输出

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
        //C语言
    int num=7;
    printf("%d\n",num);
    printf("%4d\n",num);
    printf("%04d\n",num);
        //C++
    cout<<"admin"<<endl;
    //setw():使用前需要导入<iomanip>头文件
    //正数在前面补空格,负数在后面补空格
    cout<<setw(10)<<"admin"<<endl;
    cout<<setw(-10)<<"admin"<<endl;  
    return 0;
}

2、进制输出

#include <iostream>
using namespace std;
int main(){
        //C
    num=255;
    printf("%d\n",num);  //十进制  255
    printf("%x\n",num);  //十六进制  ff
    printf("%#x\n",num);  //0xff
        //C++
    cout<<hex<<num<<endl;  //切换十六进制  ff
    cout<<oct<<num<<endl;  //切换八进制  377
    cout<<showbase;  //开启进制显示
    cout<<hex<<num<<endl;  //切换十六进制  0xff
    cout<<oct<<num<<endl;  //切换八进制  0377
    cout<<noshowbase;  //关闭进制显示
    cout<<dec<<num<<endl;  //切换十进制
    return 0;
}

3、类型推导

#include <iostream>
using namespace std;
int main(){
    auto number=0;  //类型推导,auto被推导为int
    return 0;
}

4、nullptr 

NULL是C语言的空,C++中一直使用,直到C++11中引入了新的nullptr

在C++的源代码中,NULL实际上就是0,这样在一些特殊的情况下,会引发二义性问题

#include <iostream>
using namespace std;
void fun(int i){
    cout << "A" << i << endl;
}
void fun(char* c){
    cout << "B" << c << endl;
}
int main(){
    fun(NULL);  //A0,有歧义
    fun(nullptr);  //B
    return 0;
}
;