getline()、cin.get()、cin.getline()等函数及读取整行数组或空串有效

版权声明:未经允许禁止转载。转载请联系我WX:yuyi5453。并且注明出处 https://blog.csdn.net/weixin_40532377/article/details/86583515

有的时候题目会要求一次性读取一整行数据,或者输入的一行数据的个数并不清楚。

举个栗子:求一行数的和  

                 样例1: 1 2 3 4

                  样例2:2 8 9 5 4 3 4

就像这种要求,你并不知道题目的输入数据个数是多少,使用字符串输入也是不行的,因为空格是字符串的结束标志,并不能读入一整行。

再举个栗子:统计字符串的长度,空串的长度为0。

                   比如下面这个,输入回车是不会被当做空串的!

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	while(cin>>s)
		cout<<s.length();
}

下面介绍几种常用的函数以及常用的用法

因为用的不多,所以可能说的不齐全。希望多多包涵。而且为平时所用,也不会太复杂,做做笔记会用就好。

1.getline(cin,st)

功能:读取一行数据到字符串st中

例子二如下,这样空串就为0了

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string st;
	while(getline(cin,st)){
		cout<<st.length()<<endl;
	}
}

但是例子一呢?我们可以对字符串进行处理将里面的数字存到数组中(插播一条广告,有关字符串的处理常用函数请戳这里

或者呢,可以使用字符串输入流stringstream,如下。如果不懂原理的话其实记住怎么用就好,原理可以查阅IO流。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string st;
	getline(cin,st);
	
	int a[10],n=0,x;
	stringstream ss(st);
	while(ss>>x) a[n++]=x; 
}

这个是用的比较多的,下面还有几个就不具体讲了,简单说一下,有机会再更一下,或者大家可以加我微信yuyi5453

2、cin.get()

ch=cin.get():读取一个字符

cin.get(st,m): 读取m-1长度个字符串到st中(第m个字符为'\0')。

3、cin.getline()和cin.get()一般用法差不多。

嗯,就是这样。

猜你喜欢

转载自blog.csdn.net/weixin_40532377/article/details/86583515