比如把字符串
char ch[100]="sosoaoso"一次性(不要一个一个)弄到输入流去,
再用cin.get()一一输出来
就是用cin.putback(ch[0])可以将ch[0]放回输入流中,那么用哪个函数可以将字符串ch放回到输入流中,(ch是已知的字符串,不需要从键盘输入)???
求高手啊!!!!!!!!!!!!!!!!
我想把char ch[100]="sosoaoso"放到输入流中,就像用cin.putback(ch[i]);把ch[i]放回到输入流中,只不过是把字符串放回到输入流中,怎么进行?
追答好像似乎不行,最后一句话最重要!!
你可以试试
for(char *ptr(ch);*ptr;++ptr)
std::cin.unget();
但C++primer说一般不用putback()而用unget(),
他说
unget backs up the input stream so that whatever value was last returned is still on the stream. We can call unget even if we do not know what value was last taken from the stream.
unget,使输入流倒退,以便最后返回的值仍在流上。即使不知道最近从流获得的是什么值,也可以调用 unget。
putback is a more specialized version of unget: It returns the last value read from the stream but takes an argument that must be the same as the one that was last read. Few programs use putback because the simpler unget does the same job with fewer constraints.
putback,unget 的更复杂的版本。它返回从流中读到的最后一个值,但接受最后一次读的同一实参。很少有程序使用 putback,因为更简单的 unget 也可以完成相同工作而约束更少。
In general, we are guaranteed to be able to put back at most one value before the next read. That is, we are not guaranteed to be able to call putback or unget successively without an intervening read operation.
一般而言,保证能够在下一次读之前放回最多一个值,也就是说,不保证能够连续调用 putback 或 unget 而没有介于其间的读操作。
真的没有其他方法了吗??
追答没有了!他不能保证不会有问题,因为我也没用过这个。我怀疑可能会崩溃的