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
不行的

c++的文件输入输出流中,能够从文件中读取数据的方法有哪些?
1.get()方法:get()方法是文件输入流中最基本的读取字符的方法。通过get()方法可以读取一个字符并将其放入字符变量中。语法:int get()2. getline()方法:getline()方法可以从文件输入流中读取一行数据,并将其存储在字符串变量中。语法:istream& getline(char* str, streamsize n)3. read()方法...

请问,c++如何将一个string字符串转化为float数组, 如str=”12 34 45...
include<sstream>\/\/字符串输入流 include<iostream> using namespace std;int main(){ string str="12 34 45 56 78 89 90 ";string a;float b[100];int k=0;stringstream stream(str);while(stream<>b[k]){ k++;} for(int i=0;i<k;i++)cout<<b[i]<<endl;return 0;} string的...

c++中putback()这个函数怎么用啊?
作用, 把一个字符c放回streambuffer, 使得下一个读到的字符是c, 原来的保持不变 样例 \/\/ istream putback include <iostream> using namespace std;int main () { char c;int n;char str[256];cout << "Enter a number or a word: ";c = cin.get();if ( (c >= '0') && (c...

c++字符数组的问题
2. p为可以指向字符串的指针变量,"hello"作为字符串常量,在编程时,常量也是有内存空间存放的,只是其存放的地址我们不知道,但系统知道,所以,char *p=“hello",这个操作就是系统将字符串常量“hello"的首地址赋给p指针变量,则p相当于一个具有可变地址空间的字符串数组,而问题1中的ch相当于一个...

C++ 使用getline():从文件中读取一行字符串
直接获取答案:C++中的getline()函数是一种强大的工具,用于从cin输入流或文件中读取一行字符串。它不仅适用于标准输入,也适用于fstream和ifstream这样的文件流对象。getline()方法有两种不同的语法形式:1. 用于从文件中读取bufSize-1个字符,直到遇到换行符或者达到指定长度,结尾自动添加'\\0'。这种方法...

请问在c++中如何进行文件的输入输出以及读入?
被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。要通过一个流对象打开一个文件,我们使用它的成员函数open():void open (const char * filename, openmode mode);这里filename 是一个字符串,代表要打开的文件...

stringstream
接下来,通过str()方法将流内容转换回字符串,如gstr = ostr.str()。同样,也可以从流中读取数据,如通过>>操作符从ostr中提取字符并赋值给字符变量a。在处理不同类型的流时,C++提供了istringstream和ostringstream,它们分别对应于输入流和输出流。它们与fstream的ifstream、ofstream等类在使用上类似,...

C++输入问题
c++中 cin>>ch;是不支持空格输入的。如果你想输入字符串"123 abc",那么被实际读入的是123,因为有空格,所以abc读不进去。get()函数是输入流 istream的一个成员函数。举个例子:include<<iostream>> \/\/包含#include<> using namespace std;int mian(){ char ch;while((ch=cin.get()) !

C++ 中文件操作的几个基本函数是什么?
1、插入器(<<)向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'n';就表示把字符串"Write Stdout"和换行字符('n')输出到标准输出流。2、析取器(>>)从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是...

c++程序问题,为什么用gets()输入不了字符,程序无错,把pluskey
因为gets()函数接收到了回车符 在主函数中执行到if(getchar()=='a') 时,接收输入,此时我们会输入字符并按回车,我们输入的第一个字符被getchar()函数接收,而第二个之后的字符仍然在输入字符流中,所以当使用gets()时,就接收到了输入流中的字符串,之所以不能接收输入,是因为我们先输入了...

相似回答