【发布时间】:2021-08-26 11:06:00
【问题描述】:
代码
#include<iostream>
int main()
{
char s[20];
char ch;
std::cin.getline(s,10);
std::cout<<"x"<<s<<"x"<<"\n";
std::cin>>ch;
std::cout<<"x"<<ch<<"x";
std::cin>>ch;
std::cout<<"x"<<ch<<"x";
std::cin>>ch;
std::cout<<"x"<<ch<<"x";
}
输出 1
bonaparte // I entered these 9 characters as input
xbonapartex
a // input
xax
b // input
xbx
c // input
xcx
输出 2
bonaparte2 // I entered these 10 characters as input
xbonapartex
x x
x x
x x
与第一个输出相比,我刚刚输入了一个额外的字母意味着通过键盘bonaparte2 总共输入了 10 个字符。
据我所知,getline 将提取 9 个字符并添加 '\0' 并存储在字符串 s 中。所以流仍然包含字符2 和\n。所以首先cin>>ch 应该取2 并打印x2x。
现在第二个cin>>ch 应该忽略\n,因为它是前导空白字符,但这些都没有发生。程序没有从键盘输入询问。
【问题讨论】: