输入输出总结(你会输出一个双引号吗?)

1.前言:

你会输出一个双引号吗?如何输入一行带空格的字符串?每个题我们都要用到输入输出,尤其在在输入字符串的时候,我们要对各个函数的截停条件要了解。

2.cin

cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。不管是读数字还是读字符串都是适用的

缺点:cin的输入较慢,其输入数据达到20万以上时非常明显,在100万时cin读入就会超时。我们直接用scanf代替即可。主要和缓冲区有关,也有让cin加速的方法,不过还是比不过scanf,主要是懒得记了~~~

3.getline()

getline()是一个面向行的函数。用来完成一行数据的读入,以enter或者指定数目的字符结束读入
这个一般我们都是在读入带空格的字符串的时候才用

用法一:
读入整行,遇到回车结束

string s;
getline(cin,s);

用法二:
cin.getline(字符数组名,接收长度,结束符)

char name[256];
cin.getline(name, 256,'*');

4. gets

gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取。但换行符会被丢弃,然后在末尾添加’\0’字符。

5.getchar()

读入一个字符,以enter结束。getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾(End-Of-File)则返回-1(EOF),且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在缓冲区。它可以单独使用,不像上面的必须要读进一个变量中

6.scanf

6.1输入整行字符串

用%[^\n]表示读到换行符停下

scanf("%[^\n]",&str);

6.2输入带空格或者其他字符的数据

比如我们要输入三个数,数之间以空格分隔

scanf("%d%d%d",&a,&b,&c); //%d之间并不用带空格

假如以,分隔,

scanf("%d,%d,%d",&a,&b,&c); //%d之间也要带上,

比如我们要读入日期:2024-5-31

scanf("%d-%d-%d",&a,&b,&c); 

6.3输入带空格的字符串

输入:

a b c

代码:

#include<iostream>
using namespace std;
int main()
{
	char a,b,c;
//	cin>>a>>b>>c;
	scanf("%c %c %c",&a,&b,&c);
	cout<<a<<' '<<b<<' '<<c<<endl;
	
	return 0;
}

如果%c之间不加空格就会把空格读进去,但是cin就不会,cin会刷新缓冲区

7.printf

7.1 输出精度

精度格式符以“.”开头,后跟十进制整数。

比如:保留两位小数:

printf("%.2lf",a);

7.2宽度限制

printf("%06d",1000);输出:001000 //意思是不足6位在前面补0

8.转义字符

用处:cout/scanf 在输出时候都有"“那么三个”""就报错了,转义字符就是干这个的。

8.1输出双引号

cout<<"\"";

8.2输出单\

cout<<"\\";

9.关于endl

“\n” 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 “\n” 类似,但也有区别。

std::endl 输出一个换行符,并调用 flush 函数,立即刷新缓冲区。

由于流操作符 << 的重载,对于 ‘\n’ 和 “\n”,输出效果相同。
因此\n的效率更快,(还真遇到过输出endl过多超时的题,不过题目找不到了~)

因此有时你会看到有的人的代码里会有这行:

#define endl '\n'
  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值