需要关于cin.get和cin.putback的帮助
我对编程非常陌生,正在研究这段代码,试图理解它是如何工作的。我的理解是,while循环的每次运行的开始都是程序等待输入,如果允许该输入,则循环运行。那是对的吗?如果是的话,如果程序打印出'$',程序如何显示'!'键入,看在这种情况下如何在其他情况下的cout命令没有被激活?需要关于cin.get和cin.putback的帮助
int main() {
char ch;
cout << "enter a phrase: ";
while (cin.get(ch)) {
if (ch == '!') cin.putback('$');
else cout << ch;
while (cin.peek() == `#') cin.ignore(1,'#');
}
return 0;
}
输出:输入一个词组:Now!is#the!time#for!fun#! 现在$ isthe $可能性会$ $乐趣
请参阅documentation为putback
方法:
istream的&补篮(字符C);
认沽字符回
试图通过一个字符减少 流中的当前位置,使得从 流再次提供给由输入操作提取提取的最后一个字符。
如果程序读取'!'
字符,它把回流的'$'
字符,这是在一个循环迭代读取和打印。
所以,如果我正确理解你,那么cin.putback('$')会说,下一次我的程序中的一个字符应该被读入,那个字符将是'$'? –
@ElDuderino是的。但请注意(来自同一文档):'putback'行为取决于与流关联的特定流缓冲区对象。不同类型的缓冲区可能会失败,被忽略或覆盖该位置的字符。 – Mikhail
我不是C++专家,但我猜'cin.putback'替换'cin'流中最后一个输入的字符。它确实与'cout'无关。 – Kilazur