c++问题,如何将一字符串赋给输入流

比如把字符串
char ch[100]="sosoaoso"一次性(不要一个一个)弄到输入流去,
再用cin.get()一一输出来
就是用cin.putback(ch[0])可以将ch[0]放回输入流中,那么用哪个函数可以将字符串ch放回到输入流中,(ch是已知的字符串,不需要从键盘输入)???
求高手啊!!!!!!!!!!!!!!!!

第1个回答  2011-11-08
建议不要用c风格字符串应该用std::string就没有这些问题了。
我感觉你的意思可能是收std::stringstream
std::stringstream sst;
sst<<"sosoaoso";
std::string str(sst.str());
这就弄进去了又出来了
可能你需要做字符串和整形的转换之类的吧.追问

我想把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 而没有介于其间的读操作。

追问

真的没有其他方法了吗??

追答

没有了!他不能保证不会有问题,因为我也没用过这个。我怀疑可能会崩溃的

第2个回答  2011-11-09
用getchar()语句输入一个字符,gets()输入一串字符串!
第3个回答  2011-11-08
for(i=0;i<100;i++)
scanf("输入数据",&ch[i]);
再利用 for重新输出即可本回答被提问者采纳
第4个回答  2011-11-24
不行的
相似回答