C++标准输入输出类cout,cin用法概述

cout 标准输出类

不同进制输出数字

cout 数字数字默认是以十进制表示,也可以是用其他的进制表示:例如:

八进制:std::cot
std::cout << std::oct << i << std::endl;
十进制:std::dec
std::cout << std::dec << i << std::endl;
十六进制:std::hex
std::cout << std::hex << i << std::endl;
注意:设置了上面三种进制控制符表示后,后面的默认都沿用该设置,例如:
int i = 10;
int a = 11;
int b = 12;
std::cout << std::hex << i << a << std::endl;
std::cout << b << std::endl;
那么后面的将都已十六进制输出

以二进制比特位输出:

在头文件 bitset 中名字空间 std 中有个 bitset 类可以将数字以二进制表示
#include <bitset>
例如:
double i = 2.6;
std::cout << std::bitset<4>(i) << std::endl;
其中<>中的 4 表示只显示低 4 位,i 就是要转换的数字
        在使用 cout 对内容格式进行控制的操作一般在 std 里面的一些类可以对其进行处理,具体的一个介绍将关注后续容器一章的讲解,下图讲述了一些输出格式控制的控制类,可以根据所需操作对应去查找相关 std 容器的用法。

cin 标准输入类

cin 也是 std 空间中的一个类,它重载了>>运算符用于做一个输入操作

例如:
int a;
float b;
double c;
char d;
char buf[128];
std::cin>>a;
std::cin>>b;
std::cin>>c;
std::cin>>d;
std::cin>>buf;
        需要注意的是,使用 cin 输入的时候,输入的类型一定要正确,否则会出现意想不到的错误,
例如:
#include <iostream>
int main()
{
    int a = 10;
    std::cin>>a;
    std::cout<<a<<std::endl;
    return 0;
}
当输入非数字的,a 的值就变成 0 去了

如果是在循环中,将使程序陷入死循环,例如
#include <string>
#include <iostream>
using namespace std;
int main( )
{
    int num;
    while(1)
    {
        cout << "请输数字: ";
        cin >> num; //当输入字母或者.时会导致 cin 状态异常陷入死循环
        cout << "你输入的数字是: " << num << endl;
    }
    return 0;
}

另外在对字符串进行输入的时候,遇到空格,TAB 和回车符就默认字符串结束了

cin.get 方式输入

方式一:
char a ;
a = std :: cin . get ();
        在键盘上获取一个字符给到返回值
方式二:
char a ;
std :: cin . get ( a );
        从键盘中获取一个字符给到第一个参数
方式三:
char a [ 128 ] = { 0 };
std :: cin . get ( a , 128 );
        从键盘中读取一个字符串给到第一个参数,第二个参数是字符串最大长度,相比于利用>>去读字符串, 它可以接收空格和 TAB.
方式四:
char a [ 128 ] = { 0 };
std :: cin . get ( a , 128 , '0' );
与方式三不同的是,它可以指定遇到什么字符结束,例如指定为‘0’就是遇到字符 0 就结束。

cin.getline 方式输入

 cin 类中函数:

std 空间中函数:

istream & getline ( istream & is , string & str ); // 默认以换行符结束
istream & getline ( istream & is , string & str , char delim );
方式一:使用 cin 类中函数
char a[128] = {0};
std::cin.getline(a,128);
std::cin.getline(a,128,'p'); //指定结束符
与 get 不同的是, cin.getline 不会将结束符或者换行符残留在输入缓冲区中
方式二:使用 std 空间中函数
#include <iostream>
#include<string>
int main()
{
    std::string a;
    std::getline(std::cin,a);
    std::cout<<a<<std::endl;
    return 0;
}
        这个是建议使用的一个字符串输入函数,它是 string 头文件中 std 名字空间中的一个函数,可
以对 string 进行输入,而上面的 get 输入方式只能对 char*类型进行输入

cin 清空缓冲区

std::cin.ignore();

用于清空缓冲区的内容
还可以使用 cin.ignore()来限定清除的缓冲区字符。例如:
#include <iostream>
#include<string>
int main()
{
    char a[128] = {0};
    std::cin>>a;
    std::cin.ignore(1024,'p');
    char b = std::cin.get();
    std::cout<<a<<":"<<b<<std::endl;
    return 0;
}

        可以看到 ignore 把缓冲区字符 p 之前的都清除了,也包括 p,其中 ignore 的第一个参数是一个最大清除流大小的一个字段,只要将它设置的足够大,就只有第二个参数有效了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值