为何C++中用std::cin读取含空格字符串会出现异常行为?
问题原因解析
这是因为C++里std::cin的>>运算符读取字符串时,默认以**空白字符(空格、换行、制表符等)**作为分隔标记:
- 当你输入
John Doe时,std::cin >> fName只会读取空格前的John,剩下的Doe会留在输入缓冲区中。 - 接下来执行
std::cin >> lName时,程序会直接从缓冲区里读取残留的Doe,不需要等待你手动输入,所以看起来像是跳过了lName的输入步骤。 - 最终输出时,
fName是John,lName是Doe,拼接后就呈现出Hello John Doe的结果,让你误以为程序读取了完整的全名,但实际上是分两次读取了缓冲区里的分段内容。
内容的提问来源于stack exchange,提问作者Platinum
相关产品推荐
相关产品推荐

