C++标准输出和输入流——cout和cin

一、了解到的一些函数

#1、cout,作用是输出到屏幕,但是也不是cout<<这么简单的用,在输出时,有缓存区一说,另外标准输出处理cout外还有cerr和clog

1、头文件iostream,包含了该头文件后,我们就可以直接使用这些对象,包含标准的输出流对象cout、cerr和clog以及标准输入流对象cin等。
2、所谓标准输出其实就是向标准输出设备进行输出,通常来讲我们可以将标准输出设备理解为显示器。    
3、系统声明的三个标准输出流对象cout、cerr和clog中,cerr和clog对象都是标准错误流,不同的是cerr是直接将错误信息输出到显示器,而clog则不同,clog是将错误信息先写入到缓冲区,待清扫缓冲区时,再将错误内容输出到显示器中。
4、与cerr和clog对象不同,cout对象则非错误流,而只是普通的输出流,该对象在进行输出时,也会经过先缓冲区,然后再输出到显示器。
5、endl会带来一次清扫缓冲区动作。

#2、标准输出cout下还有很多方法可用
标准输出流对象cout

	cout.flush() // 用于刷新缓冲,无条件地将缓冲区中的输出信息送显示器
	
	cout.put()//输出到屏幕,相当于 <<的作用
	
	cout.write()//用来输出字符串
	**cout.write(*s,num);是用来输出字符串的。*s是字符串的地址,num是想要输出的字符串的长度。
	比如char str[]="i love you";
	cout.write(str,strlen(str))的话 就输出i love you
	cout.write(str,6)的话 就输出i love

	cout.width()//输出字符串的宽度,可以另外修改对齐方式
	
	cout.fill()//用什么填满
	cout.width(8); //设置输出宽度为8
	cout <<cout.fill('*') <<123 <<endl; //不够用*来填充
	
	cout.setf(标记)
	cout.setf()的作用是通过设置格式标志来控制输出形式,具体的设置类型很多

cout.self()用法详细

3、标准输入cin下还有很多方法
cin.get() //一次只能读取一个字符
cin.get(一个参数) //读一个字符
cin.get(三个参数) //可以读字符串
cin.getline() //读取一行,可以读取空格
详细的get,getline,gets等用法

cin.ignore()
它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。例如可以这么用,cin.ignore(1024, ‘\n’),通常把第一个参数设置得足够大,这样实际上是为了只有第二个参数 ‘\n’ 起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲流中清除出去。
如果默认不给参数的话,默认参数为cin.ignore(1, EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束。
详细ignore说明和例子

cin.peek()和cin.putback()
该调用形式为cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。
cin.putback()将读出来的字符再放回缓冲区
可以对比以下这两段代码来理解
1

#include <iostream>
using namespace std;
int main () 
{
cout << "Please, enter a number or a word: ";
	char c = std::cin.get();

	if ( (c >= '0') && (c <= '9') ) //输入的整数和字符串 分开处理
	{
		int n; //整数不可能 中间有空格 使用cin >>n
		cin.putback (c);   //!!接收c的时候用的是get(),这里将这个字符再放回缓冲区
		cin >> n;
		cout << "You entered a number: " << n << '\n';
	}
	else
	{
		string str;
		cin.putback (c);
		//cin.getline(str);
		getline (cin, str); // //字符串 中间可能有空格 使用 cin.getline();
		cout << "You entered a word: " << str << '\n';
	}
	system("pause");
	return 0;
}

2

int main () {
	char c;
	int n;
	char str[256];
	cout << "Enter a number or a word: ";
	c=cin.peek(); //这个地方用peek(),知识看一下缓冲区的数据,缓冲区的字符的指针不会移动
	if ( (c >= '0') && (c <= '9') )
		{
		cin >> n;//这里可以直接输入到n,而不需要putback()
		cout << "You have entered number " << n << endl;
		}
	else
		{
		cin >> str;
		cout << " You have entered word " << str << endl;
		}
	return 0;
}
发布了46 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42718004/article/details/85344638