gpt4 book ai didi

c++ - cin.get() 和 cin.put() 的行为

转载 作者:行者123 更新时间:2023-11-28 00:41:47 25 4
gpt4 key购买 nike

以下是 C++ 中的一段代码,它将一个字母作为输入并将其作为输出。这个连续直到不按 Ctrl+C^C

#include<iostream>
using namespace std;
int main(void)
{
char c;
do
{
c = cin.get();
cout.put(c);
}while((c = cin.get())!='\0');
return 0;
}

问题是以下输出:-

hello
hlo

hello
el

我知道为什么第一个输出是这样的,但是第二个呢?另外,当我只按一次 enter 键时,为什么会有两条新行。我能得到一些帮助吗?

最佳答案

第一次,cin.get() 阻塞了 do-while 循环代码中的线程。获得输入后,按回车键,您会发现出现了 2 个换行符。这是因为do-while循环代码里面的cin.get()一直阻塞,当你回车的时候,c会变成'\n'。接下来发生的是 cout.put('\n');

此时,do-while 条件中的 cin.get() 阻塞了您的线程,因此您最终跳过了 h,第一个 lo

关于c++ - cin.get() 和 cin.put() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com