为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何用cin输入string却不会因为空格而接受不到后面的字符?

请问该如何用cin输入string却不会因为空格而接受不到后面的字符?

catspeake 2021-12-10 11:07:51
如题,请问如何用cin输入string却不会因为空格而接受不到后面的字符?在线等!
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

方法:std::string myWords;

std::getline(std::cin, myWords, '\n');

std::cout << myWords << std::endl;

运行程序,在界面输入 I create a new virtual world!回车,界面输出 I create a new virtual world! 完全正确。

这是因为cin 遇空格停止识别,虽然输入很长一串字符,但是cin在第一个遇到第一个空格就停止输入,所以,cin只把 I 写入myWords。

cin 遇空格或换行,会停止识别,如果你打算输入的字符串中带1个或多个空格,则采用getline把停止识别的符号设置为‘\n’(即换行符),就能正确输入输出了。

用cin>>str;这种方法来接收字符串那么录入的str不能包含空格,否则它会按照空格将整个字符串切分成若干段。如果要是想输入带空格的字符串那就要用到getline()这个函数了。

扩展资料

cin>>输入字符串注意事项:

1、在默认情况下,运算符“>>”将跳过空白符,然后读入后面的与变量类型相对应的值。因此,给一组变量输入值时可用空白符(空格、回车或Tab键)将键入的数值间隔开。

2、当输入字符串时,运算符“>>”的作用是跳过空白,读入后面的非空白字符,直到遇到另一个空白字符为止,并在串尾放一个字符‘\0’。

cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。

cin.get()读取单个字符

cin.get()从输入缓冲区读取单个字符时不忽略分隔符,直接将其读取

cin.get()的返回值是int类型,成功:读取字符的ASCII码值,遇到文件结束符时,返回EOF,即-1,Windows下标准输入输入文件结束符为Ctrl+z,Linux为Ctrl+d。cin.get(char var)如果成功返回的是cin对象,因此可以支持链式操作,如cin.get(b).get(c)。



查看完整回答
反对 回复 2021-12-13
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

cin是istream类型对象。cin对象将标准输入看作字节流,cin对输入的解释方式取决于>>操作符后的参数数据类型,对于string类型,cin会将输入流中第一个非空白(空格、制表、换行等)字符和下一个空白字符之间的字节读取出来,存储到string对象中,因此会出现问题中所述的情况。但是还有一个简单的string io操作,那就是getline。例如string line; getline(cin,line); 只要输入第一个字符不是回车,最后一个字符是回车,这之间的内容都会被读取到line中,这些内容就可以是包含空格的字符串了。

查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 1378 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号