好的,所以我在教科书中遇到了这个代码片段,它应该回应用户键入的所有其他角色。现在,我理解了其他所有角色部分,但是我在使用cin.get时遇到了困难()。我明白为什么第一个cin.get()就在那里,但为什么它也在循环中呢?我猜我还没有完全掌握输入流的本质......
编辑:它只是点击了......我是个白痴。谢谢你清理它。char next;
int count = 0;
cout << "Enter a line of input:\n";
cin.get(next);
while (next != '\n')
{
if ((count%2) == 0)
cout << next;
count++;
cin.get(next);
}
提前致谢!
答案 0 :(得分:3)
cin.get
并不像你似乎相信的那样“抓住一行文字”。在这种情况下,cin.get
只抓取一个字符。使用cin.get
,您可以逐个读取用户正在输入的字符。这就是你在循环中cin.get
的原因。
答案 1 :(得分:1)
在循环之前调用cin.get(next)只是将缓冲用户输入的第一个字符放入变量'next。'。
一旦进入循环,并且处理了'next'中存储的字符(如果在偶数索引处回显,否则忽略),需要再次调用cin.get(next)以检索下一个字符。
答案 2 :(得分:1)
它的打印字符出现在偶数位置
char next;
int count = 0;
cout << "Enter a line of input:\n";
cin.get(next);//gets first character (position zero) from input stream
while (next != '\n')//check whether the character is not line feed(End of the line)
{
if ((count%2) == 0)//checks if position is even
cout << next; //if yes print that letter
count++; //increments the count
cin.get(next); //gets next character from input stream
}
我们需要两个cin.get(...)
答案 3 :(得分:1)
但是cin.get(ch)之外的用途是什么呢? cin.get()如何在循环中工作 这两种行为看起来都不一样 所以这令人困惑 在循环中有一个语句来打印使用cin.get(下一个)获得的字符,但它不会打印它....按下回车键后它会一起打印...实际上它应该显示我们输入的字符键盘,但实际上并没有像那样工作
答案 4 :(得分:0)
C ++中的Streams是缓冲的。把它们想象成一行字母。当您致电cin.get(var)
时,该行中的第一个字符将被删除并返回给您。所以,这就是它的工作原理。
一个例子会有所帮助。当执行第一个cin.get()时,假设你键入:
LISP
然后,cin.get()将返回(在var。中)L
,然后缓冲区看起来像ISP
...下一个调用将I
放在var中。缓冲区看起来像SP
等等......
答案 5 :(得分:0)
istream的&安培; get(char&amp; c)从输入流中获取一个字符。
所以在第一次调用cin.get(next)时输入: “你好,世界!” 然后未来的cin.get(下一个)将在每次调用时获取h,e,l,l等...直到输入流中没有更多字符,并且它将阻止询问用户更多输入。< / p>