关于>>、<<组合的问题运营商 & cin 和 cout 对象

发布于 2024-11-05 12:32:15 字数 424 浏览 6 评论 0 原文

char word[10];
int n=5;
while(n--)
{
  cin>>word;
  cout<<n<<" "<<word<<" ";
}

输出:

ABC DEF GHI JKL MNO
4 ABC 3 DEF 2 GHI 1 JKL 0 MNO

现在,我的问题是当输入缓冲区遇到空格('')时会发生什么?可以看出,n 在每个空格之后都会递减,但 cout << word 屏幕上不显示任何内容。

我很困惑,因为我认为输入一个单词后就应该显示输出。例如。

 ABC 4 ABC DEF 3 DEF GHI 2 GHI JKL 1 JKL MNO 0 MNO
char word[10];
int n=5;
while(n--)
{
  cin>>word;
  cout<<n<<" "<<word<<" ";
}

Output:

ABC DEF GHI JKL MNO
4 ABC 3 DEF 2 GHI 1 JKL 0 MNO

Now, my question is what happens when input buffer encounters a blankspace(' ')? It is seen that n is being decremented after every white space but the cout << word does not display anything on screen.

I am confused as i think that the output should be displayed as soon as one word is input. Eg.

 ABC 4 ABC DEF 3 DEF GHI 2 GHI JKL 1 JKL MNO 0 MNO

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

李白 2024-11-12 12:32:15

不确定我理解你的问题,但如果我没理解错的话:流提取运算符会读取直到遇到空格,然后消耗空格。您不会得到仅由空白字符组成的新单词。


几分钟后:我回去重新阅读,现在我想我明白你在问什么:两个流不同步,因此输入和输出不能按照你建议的方式交错。

Not sure I understand your question, but if I'm reading you right: The stream extraction operator reads until it encounters whitespace, and then consumes the whitespace. You don't get a new word consisting of just the whitespace characters.


A few minutes later: I went back and re-read again, and now I think I understand what you're asking: the two streams are not synchronized, so the input and output can't be interleaved in the way you suggest.

不弃不离 2024-11-12 12:32:15

cin 读取以空格分隔的字符串,但在此过程中空格被丢弃

cin read strings separated by space but space are discarded in the process

留蓝 2024-11-12 12:32:15

尝试做

cout << flush;

Or

cout << endl;

(在 while 内)

Try doing

cout << flush;

Or

cout << endl;

(inside the while)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文