遇到这么一个问题:
想从键盘输入一行字符串,然后输出到终端,不使用Qt
方法一:
std::string myWords;
std::cin >> myWords;
std::cout << myWords << std::endl;
运行程序,在界面输入 I create a new virtual world!
回车,界面输出 I
问题来了,后面的一串字符去哪了?
答: cin 遇空格停止识别,虽然输入很长一串字符,但是cin在第一个遇到第一个空格就停止输入,所以,cin只把 I 写入myWords
所以,方法一不正确。正确方法见方法二:
方法二:
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 遇空格或换行,会停止识别,如果你打算输入的字符串中带1个或多个空格,则采用getline把停止识别的符号设置为‘\n’(即换行符),就能正确输入输出了。