问题5 cin>>,cin.getline,cin.get,getline的用法

cin>>

1.输入一个字母或者字符

#include<iostream>
using namespace std;
int main(){
    int a;
    cin>>a;
    cout<<a<<endl;
}
1.png

2.接收一个字符串,遇“空格”、“TAB”、“回车”就结束

#include<iostream>
using namespace std;
int main(){
    char a[5];
    cin>>a;
    cout<<a<<endl;
}
2.png

cin.getline()

1.cin.getline(接收字符串到m,接收个数n,结束字符)。接收一个字符串,可以接收空格等,
2.最后一个字符为‘\0’。结束符可以通过设置第三个参数自己设置,默认是回车。
3.m不能为string类型。
4.如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

using namespace std;
int main(){
    char a[20];
    cin.getline(a,5);
    cout<<a<<endl;
}
3.png

接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;

把5改成20:
4.png

cin.get()

1.cin.get(字符变量名),用来接收字符,只获取一个字符,可以接收空格,遇回车结束

#include<iostream>
using namespace std;
int main(){
    char a[5];
    for(int i=0;i<5;i++){
        cin.get(a[i]);
        cout<<a[i]; 
    }
}
5.png

2.cin.get(数组名,接收字符数目),用来接收字符串,可以接收空格,遇回车结束。

注意:数组的最后一个字符会是‘\0’,设接收字符数目为n,如果输入的字符串大于等于n,则实际接收到的输入是字符串的前面n-1个字符,包括空格(不包括回车,遇到回车就结束了),会自动在后面增加一个‘\0’。

#include<iostream>
using namespace std;
int main(){
    char a[5];
    cin.get(a,5);
    cout<<a; 
}
6.png

3.cin.get(),没有参数,主要用于舍弃输入流中不需要的字符,或者舍弃回车,即舍弃输入流中的一个字符。

没有用cin.get(),则后面的e会从输入流中继续读入

#include<iostream>
using namespace std;
int main(){
    char a[5],b[5];
    cin.get(a,5);
    cin.get(b,5);
    cout<<a<<endl; 
    cout<<b<<endl;
}
7.png

有cin.get(),则d后面的e被省略了。

#include<iostream>
using namespace std;
int main(){
    char a[5],b[5];
    cin.get(a,5);
    cin.get();
    cin.get(b,5);
    cout<<a<<endl; 
    cout<<b<<endl;
}
8.png

getline()

接收一个字符串,可以接收空格并输出,需包含“#include<string>”

#include<iostream>
#include<string>
using namespace std;
int main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
9.png

与cin.getline()的区别:
1.cin.getline()接收输入字符串的是数组,getline()是string类型。
2.cin.getline()可以接收空格,但不能接收回车;getline()可以接收空格和回车
3.cin.getline()会在数组结尾是'\0',getline()不会

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容