c++ 输入cin>> get() getline()

最近终于把三种输入方式搞明白了,记下来。

cin

> char n1[20];
> char n2[20];
> cout<<"Enter your name: "<<endl;
> cin>>n1;
> cout<<"Enter your school: "<<endl;
> cin>>n2;
> cout<< "your name  is "<<n1<<endl;
> cout<<"your school is"<<n1<<endl;

运行情况1:

> Enter your name: 
> **Taylor Swift**
> Enter your school: 
> your name is Taylor;
> your school is swift

分析:cin 使用空白(空格、制表符、换行符)来确定字符串的结束位置,所以我们在还没有对“输入学校”做出反应,程序就把他显示出来了,taylor 后面的空格 结束了第一次输入后,把taylor 放到n1中,并自动在结尾添加空字符(‘\0’)
cin 把第一个单词读取完后,把 空格swift回车 留在输入队列中,而下面cin>>n2 的输入会过滤掉不可见的字符(指空格,制表符,回车),首先把 空格 过滤,然后把 swift 放到n2中,遇见回车 结束。(关于cin的读入规则,要把前面这加粗的三句话理清楚,就没问题了!)

geline() 和 get()

istream中的类(如cin)提供了面向行的类成员函数:getline() get() 他们都以换行符作为结束,但是getline()会丢弃换行符,get()会把换行符保留在输入队列中

1、getline() 读取字符数组

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

char name[20];
cin.getline(name,20);

2、getline() 读取string对象

(1) istream& getline (istream& is, string& str, char delim);
(2) istream& getline (istream& is, string& str);

string str;
getline(cin,str);

3、 get()

char name[20];
char sch[20];
cin.get(name,20);
cin.get();//读取下一个字符串(即使是换行符),用它来处理换行符
cin.get(sch,20);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值