c++ 之重温字符以及格式化输出流

数据类型

字符

类型 内存(字节) 说明
char 1 ascii字符
wchar_t 2 宽字节字符
char16_t 2 utf-16字符
char32_t 4 utf-32字符

使用说明:

1、char
正常使用不说了!这里说一下:ascll为10的时换行;

举例:

int main()
{
    std::cout << "Hello World!\n";
    std::cout << "Hello World!" << std::endl;
    std::cout << "Hello World!" << (char)10; //一样使用
}

2、wchar_t

目的字符:

1、英文字符

	wchar_t wchar = { 'A' };
    std::cout << "cout: " << wchar << std::endl;
    std::wcout << "wout: " << wchar << std::endl;
    wchar = { L'A' };
    std::cout << "(L)cout: " << wchar << std::endl;
    std::wcout << "(L)wout: " << wchar << std::endl;

结果:
英文结果
结论:宽字符用于英文字符时,前缀可加L,也可不加

2、中文字符
宽字符用于中文字符时必须加前缀L,否则编译都通过不了
编译不通过
正确代码:

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <locale>  //必须要包含,在宽字符用于显示中文字符时需要使用
int main()
{
    setlocale(LC_ALL, "chs");//设置本地语言集为中文******必须要
    wchar_t wchar = { L'张' };
    std::cout << "(L)cout: " << wchar << std::endl;
    std::wcout << "(L)wout: " << wchar << std::endl;
}

结果:
中文正确
**结论:**宽字符用于中文字符时,不仅要加前缀L,还必须包含locale库和设置本地语言集为中文

查看变量的类型:

格式: typeid(变量).name()

案例:

int main()
{
    auto ia{ 10 };
    auto ib{ 2122222121212 };
    std::cout << "ia类型为" << typeid(ia).name() << std::endl;
    std::cout << "ib类型为" << typeid(ib).name() << std::endl;
}

结果:
查看类型名
这里又发现long long的另一个别名为__int64

格式化输出

1、浮点输出以及科学计数法输出切换

代码:

int main()
{
    float fa = 51222;
    std::cout << std::fixed;
    std::cout << "(fixed模式)ib= " << fa << std::endl; 

    std::cout << std::scientific;
    std::cout << "(scientific模式)ib= " << fa << std::endl;
}

结果:
浮点形式切换

2、设置有效精度

代码:

#include <iostream>
#include <iomanip>  //需要包含
int main()
{
    float fa = 5.1222f;

    std::cout << std::setprecision(4);
    std::cout << "(4位精度)fa= " << fa << std::endl;
    std::cout << std::setprecision(3);
    std::cout << "(3位精度)fa= " << fa << std::endl;
}

结果:
设置有效精度

3、设置进制输出

代码:

#include <iostream>
int main()
{
    int  ia = 50;
    std::cout << std::oct << "八进制  fa= " << ia << std::endl;
    std::cout << std::dec << "十进制  fa= " << ia << std::endl;
    std::cout << std::hex << "十六进制 fa= " << ia << std::endl;
}

结果:
在这里插入图片描述

4、设置八和十六进制输出前缀

代码:

#include <iostream>
int main()
{
    int  ia = 50;
    std::cout << std::showbase;
    std::cout << std::oct << "八进制  fa= " << ia << std::endl;
    std::cout << std::hex << "十六进制 fa= " << ia << std::endl;
}

结果:
在这里插入图片描述

5、设置输出内容宽度以及填充

代码:

#include <iostream>
#include <iomanip> //需要包含
int main()
{
    int  ia = 50;
    std::cout << std::setw(20) << "setw(10) ia= " << ia << std::endl; 
    std::cout << std::setfill('*');
    std::cout << std::setw(20) << "*setw(10) ia= " << ia << std::endl;
}

结果:
在这里插入图片描述

6、设置输出对齐方式

代码:

#include <iostream>
int main()
{
    std::cout << std::left;
    std::cout << std::setw(20) <<"aaaaaaaaaa " << std::endl;
    std::cout << std::setw(20) << "bbbbb " << std::endl;

    std::cout << std::right;
    std::cout << std::setw(20) << "aaaaaaaaaa " << std::endl;
    std::cout << std::setw(20) << "bbbbb " << std::endl;
}

结果:
在这里插入图片描述
自己向自己的学习精神致敬!!!

发布了6 篇原创文章 · 获赞 7 · 访问量 269

猜你喜欢

转载自blog.csdn.net/u010092716/article/details/104306592