C++中的输入详解(cin,cin.get,gets,cin.get,cin.getline)

scanf解释
https://blog.csdn.net/challenglistic/article/details/121489749?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169348339016800182135459%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169348339016800182135459&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-2-121489749-null-null.268v1koosearch&utm_term=scanf&spm=1018.2226.3001.4450

所有的输入方式都离不开最基本的原理,只是赋值的方法不一样而已。首先我们需要建立缓冲区的概念,输入容易混淆,出现问题,都是输入中掺杂空格,tab键,回车。
当我们从键盘输入任何东西,有一点不会变,输入什么,缓冲区中就会有什么。
如输入:
“a b

缓冲区依次中是’a’‘空格’’tab键‘’\n‘
。这里\n代表回车键

字符输入

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//cin cout会自动过滤输入的空格键、tab键,回车键
//即不计入数组
//只能以回车键作为结束输入字符的标志
//以下所有输入都是以回车键作为结束输入的标志,且该作为结束输入的回车键
//不计入数组
int main(){
	char input[6];
	for(int i=0;i<5;i++){
		cin>>input[i];
	}
	for(int i=0;i<5;i++){
		cout<<input[i];
	}
	return 0;
}

输入:a’空格键‘b’tab键‘c’\n‘d’\n’e’\n’
输出:abcde

输入:abcd’\n’‘\n’e’tab键’‘\n’
输出:abcde
当且仅当字符char的个数达到5个,且最后有回车键才会结束。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//cin.get()会接受空格,tab,回车
//仅以回车键作为最终结束输入的标志
//即包括字符、空格,tab,回车的输入总个数达到5个,
//只有输入回车键才会结束,其他键无效
int main(){
	char input[6];
	for(int i=0;i<5;i++){
		cin.get(input[i]);
	}
	for(int i=0;i<5;i++){
		cout<<input[i];
	}
	
	return 0;
}

输入:a’空格键‘b’tab键‘c’\n‘
输出:a’空格键‘b’tab键‘c

输入:a’空格键‘bc’\n‘
输出:a’空格键‘bc’\n‘
注意,第二次的输出有回车输出。

字符串输入

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstring>
#include <stdio.h>
using namespace std;
//gets可以接受空格、tab
//一按回车键就结束输入
int main(){
	char input[6];
	gets(input);
	int len=strlen(input);
	cout<<len;
	
	
	return 0;
}

输入:a’空格键‘b’tab键‘c’\n‘
输出:5
则input=a’空格键‘b’tab键‘c’

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//getchar()接受空格、tab、回车
//仅以回车键作为结束标志,最后作为结束标志的回车键不计入数组
int main(){
	char input[6];
	for(int i=0;i<5;i++){
		input[i]=getchar();
	}
	for(int i=0;i<5;i++){
		cout<<input[i];
	}
	
	return 0;
}


#include <iostream>
using namespace std;

int main() {
	char a;
	char array[20]={NULL}; 
	cin.get(array,20);
	cin.get(a);
	cout<<array<<" "<<(int)a<<endl;
	return 0;
}

输入:123456789[回车],
输出:123456789 10


#include <iostream>
using namespace std;

int main() {
	char array[20]={NULL};
	char a;
	cin.getline(array,20); //或者指定结束符,使用下面一行
	cin.get(a);
	cout<<array<<" "<<(int)a<<endl;
	return 0;
}

输入:123456789[回车]回车],
输出:123456789 10
注意,cin.getline() 与 cin.get() 的区别是,cin.getline() 不会将行结束符(如换行符)残留在输入缓冲区中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值