cin.get()和cin.put()的行为 下面是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; }
我知道为什么第一个输出是这样来的,但是第二个呢?另外,当我只按一次键时,为什么会出现两行新行。我能得到一些帮助吗?查看循环条件-每次循环迭代调用cin.get()和cin.put()的行为 下面是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; },c++,buffer,iteration,iostream,C++,Buffer,Iteration,Iostream,我知道为什么第一个输出是这样来的,但是第二个呢?另外,当我只按一次键时,为什么会出现两行新行。我能得到一些帮助吗?查看循环条件-每次循环迭代调用cin.get()两次。缺少的字符将与'\0'进行比较并丢弃。查看循环条件-每次循环迭代调用cin.get()两次。缺少的字符将与'\0'进行比较并丢弃。正如您所知,cin.get()在循环中被调用两次,而cin.put(c)仅被调用一次。由于您键入了两次hello,并且每次跳过一个字符,因此输出的字符序列是:(跳过的字符在括号中): h(e)l(l)o
cin.get()
两次。缺少的字符将与'\0'
进行比较并丢弃。查看循环条件-每次循环迭代调用cin.get()
两次。缺少的字符将与'\0'
进行比较并丢弃。正如您所知,cin.get()
在循环中被调用两次,而cin.put(c)
仅被调用一次。由于您键入了两次hello
,并且每次跳过一个字符,因此输出的字符序列是:(跳过的字符在括号中):
h(e)l(l)o
(h)e(l)l(o)
正如您所知,cin.get()
在循环中被调用两次,而cin.put(c)
只被调用一次。由于您键入了两次hello
,并且每次跳过一个字符,因此输出的字符序列是:(跳过的字符在括号中):
h(e)l(l)o
(h)e(l)l(o)
第一次,cin.get()
阻止do-while循环代码内的线程。
获得输入后,按enter键,会发现出现两个换行符。这是因为循环代码被阻塞时,do中的cin.get()
,当您按enter键时,c
将变成'\n'
。接下来发生的是cout.put('\n')代码>
此时,do while条件中的cin.get()
阻塞了线程,因此您最终跳过了h
、第一个l
和o
,第一次,cin.get()
阻塞了do while循环代码中的线程。
获得输入后,按enter键,会发现出现两个换行符。这是因为循环代码被阻塞时,do中的cin.get()
,当您按enter键时,c
将变成'\n'
。接下来发生的是cout.put('\n')代码>
此时,do while条件中的cin.get()
阻塞了线程,因此您最终跳过了h
、第一个l
和o
这两个关键点。这些是:-
当我们按下字符串末尾的return
键时,它也是
存储在缓冲区中,并与存储的所有字符一起推送
在它的标准输出
输出取决于是否有en个偶数或奇数个
字符串中的字符(包括返回
键)
说字符串你好输入代码>并点击return
。然后,我们再次进入你好
并点击返回
键。在这两种情况下,字符总数(在任何一种情况下)都是7
,而不是6
。在这种情况下,输出为:-
hello!
hlo
hello!
el!_
其中表示将要显示的光标。这是因为do while
循环中的cin.get()
命令读取第一个字符串后,按下了return
键,因此打印了该字符串。之后,控件转到do while
条件,并读取第二个字符串的h
。这就是第二次输出中未打印h
的原因。之后,将显示每个偶数字符。这就是为什么代码>已打印。之后,do while
条件检测到return
键,将执行暂停在位置
现在,如果您按一次return
键,您将获得两次return
,因为一次输入return
,另一次则是输出。对于此问题,应记住两个关键点。这些是:-
当我们按下字符串末尾的return
键时,它也是
存储在缓冲区中,并与存储的所有字符一起推送
在它的标准输出
输出取决于是否有en个偶数或奇数个
字符串中的字符(包括返回
键)
说字符串你好输入代码>并点击return
。然后,我们再次进入你好
并点击返回
键。在这两种情况下,字符总数(在任何一种情况下)都是7
,而不是6
。在这种情况下,输出为:-
hello!
hlo
hello!
el!_
其中表示将要显示的光标。这是因为do while
循环中的cin.get()
命令读取第一个字符串后,按下了return
键,因此打印了该字符串。之后,控件转到do while
条件,并读取第二个字符串的h
。这就是第二次输出中未打印h
的原因。之后,将显示每个偶数字符。这就是为什么代码>已打印。之后,do while
条件检测到return
键,将执行暂停在位置
现在,如果你按一下return
键,你会得到return
两次,因为一次输入return
,另一次是输出。这是有道理的,但为什么我在两行不同的输入中会出现这种情况?当我连续地给出相同的输入时(我不是),应该会发生这种情况,但在这种情况下,它不会发生