C++标准输入流

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

//C++输入输出包含以下三个方面的内容:
//对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I / O。
//
//以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I / O。
//
//对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I / O。主要用于像共享内存这样的

void test01()
{
	string str;
	cin >> str; //遇到空格就结束输入,但是空格会留在缓冲区
	cout << str << endl;
	//清楚缓冲区
	//1. 
	//char B;
	//while ((B = cin.get()) != '\n') {}
	//2. //C++:清除输入缓冲区的所有内容,在VS中没有效果
	//cin.sync(); 在VS2019下没有没有效果
	//3. //C++:清除输入缓冲区的所有内容,直到遇到回车符为止, 各种编译器都有效
	cin.ignore(std::numeric_limits< streamsize >::max(), '\n');

	char C = cin.get();
	cout << "C = " <<C << endl;
}

void test02()
{
	char C = cin.get();  //默认获取一个字符, 会将'\n'等字符留在缓冲区
	cout << "C = " << C << endl;

	//一个参数 : 可以再次输入字符修改原来的变量
	cin.get(C); //引用
	cout << "C = " << C << endl;
	
	char a, b, c;
	cin.get(a).get(b).get(c); //链式编程,可以一次对多个变量进行修改
	cout << "a= " << a << " b= " << b << " c= " << c << endl;
}

void test03()
{
	//int A = cin.get();
	//cout << A << endl;
	//cin.get()获取的是char字符,不能用整型数据类型来接收

	char arr[1024] = { 0 };
	//两个参数:获取字符串,并将字符串输入到对应的char型数组中,但是会在缓冲区留下换行符
	cin.get(arr, 1024);

	char C = cin.get();
	if (C == '\n')
	{
		cout << "缓冲区残留有换行符"<<endl;
	}
	else
	{
		cout << "缓冲区的换行符已被丢弃" << endl;
	}
}

void test04()
{
	char arr[1024] = { 0 };
	//获取字符串,并将字符串输入到对应的char型数组中,不会在缓冲区留下换行符
	cin.getline(arr, 1024);

	char C = cin.get();
	if (C == '\n')
	{
		cout << "缓冲区残留有换行符" << endl;
	}
	else
	{
		cout << "缓冲区的换行符已被丢弃" << endl;
	}
	cout << "arr = " << arr << endl;
}

void test05()
{
	cin.ignore(); //默认忽略第一个输入字符
	cin.ignore(3); //添加参数X,忽略X个输入字符

	char C = cin.get();
	cout << "C = " << C << endl;
}

void test06()
{
	char A = cin.peek();
	char B = cin.get();
	char C = cin.get();

	cout << A << endl; //偷窥,但并不会取走缓冲区里的输入字符
	cout << B << endl; //获取缓冲区的第一个字符
	cout << C << endl;


}

void test07()
{
	char C = cin.get();
	cin.putback(C); //将字符放回原位

	char arr[1024] = { 0 };
	cin.getline(arr, 1024);
	cout << arr << endl;
}

int main()
{
	//标准输入流对象cin常见函数
	//cin >> a;   // a如果是字符串,cin遇到空格返回,并且把空格保留在输入缓冲区
	//cin.get();  // 获取一个字符
	//cin.get(一个参数);
	//cin.getline(两个参数);
	//cin.ignore();
	//cin.peek();
	//cin.putback();

	test01();
	//test02();
	//test03();
	//test04();
	//test05();
	//test06();
	//test07();

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值