C++ getline() 和 get()方法总结

C++读取单行字符(包括空格、换行符、制表符)

get()

istream类重载了get()方法,分别为get(void), get(char &, int), get(char & , int , char)

  • get(void) 输入单个字符,并将其转换为整形,作为参数返回
cout << cin.get()<< endl;
  • get(char &)输入单个字符,并将其赋值给char &
char ch;
cin.get(ch);
cout << ch;
  • get(char &, int) 第一个参数用于保存输入字符,第二个参数表示最大输入字符个数,存储个数往往比第二个参数小一,最后一个用于存储结尾的空字符
  • get(char &, int, char)  第三个参数是指定分界符
char ch[20];
cin.get(ch, 20, 'f'); //输入abcefghi
cout << ch; //结果将输出abcd

getline()

getline()提供了, getline(char &, int), getline(char & , int , char)内容同get()相似

char ch1[20], ch2[20];
cin.getline(ch1, 20);
cin.getline(ch2, 20, '9');
cout << ch1 << " " << ch2;

get()和 getline()的比较

  • 两者都读取一行输入,直至到达换行符

区别:

  • get()会将换行符保留在输入序列中,这就导致了二次输入操作时,换行符会直接被读取,输入流会认为输入已经结束
char ch1[20], ch2[20];
cin.get(ch1, 20);
cin.get(ch2, 20);
cout << ch1 << " " << ch2;

上述代码只会输出ch1的内容

如何解决该问题呢,只需要先让输入流读取完换行符就可以避免这种情况

char ch1[20], ch2[20];
cin.get(ch1, 20).get();
cin.get(ch2, 20);
cout << ch1 << " " << ch2;

上述getline()为字符数组用法

当需要将读入内容传给string 对象时需改变书写形式

string str;
getline(cin, str);

这表明这个getline()不是类方法。它将cin作为参数,指出到哪里去查找输入。另外也没有指出字符串长度的参数,因为string对象将根据字符串的长度自动调整自己的大小

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值