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

如题·1如何用cin输入string却不会因为空格而接受不到后面的字符?在线等!!!。。。... 如题·1如何用cin输入string却不会因为空格而接受不到后面的字符?在线等!!!。。。 展开
 我来答
娱乐小八卦啊a
高粉答主

2020-02-07 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117830

向TA提问 私信TA
展开全部

方法: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)。

参考资料来源:

百度百科——cin

匿名用户
推荐于2017-05-27
展开全部
cin是istream类型对象。cin对象将标准输入看作字节流,cin对输入的解释方式取决于>>操作符后的参数数据类型,对于string类型,cin会将输入流中第一个非空白(空格、制表、换行等)字符和下一个空白字符之间的字节读取出来,存储到string对象中,因此会出现问题中所述的情况。但是还有一个简单的string io操作,那就是getline。例如string line; getline(cin,line); 只要输入第一个字符不是回车,最后一个字符是回车,这之间的内容都会被读取到line中,这些内容就可以是包含空格的字符串了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式