#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;
}
|