如何用cin输入string却不会因为空格而接受不到后面的字符?
方法: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)。
参考资料来源:
推荐于2017-05-27