[c++]cin.get()和cin.getline()如何读取string字符串呢

[c++]cin.get()和cin.getline()怎么读取string字符串呢?
[c++]cin.get()和cin.getline()如何读取string字符串呢

std::string name
cin>>name//这种写法就不必多说了...


难道是要使用cin.get读入到char数组里 然后再strcpy到string里面?

------解决方案--------------------
用法:

char name[256];
cin.getline(name,256);



char name[256];
cin.get(name,256);


函数原型:

// cin.getline()函数原型
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

// cin.get()函数原型
istream& get (char& c);
istream& get (char* s, streamsize n);
istream& get (char* s, streamsize n, char delim);

从函数原型可以看出来cin.getline和cin.get只能接受C风格的字符串。

------解决方案--------------------
读取字符串到C++string 对象中,可以用这个函数 
istream & string::getline(istream &is,string&s,const char ='\n');


VC9的实现如下(原型声明):

template<class _E, class _TYPE, class _A> inline
   basic_istream<_E, _TYPE>& getline(
   basic_istream<_E, _TYPE>& Istream,
   basic_string<_E, _TYPE, _A>& Xstring,
   const _E _D=_TYPE::newline( )
   );


VC9 的示例代码:

// string_getline_sample.cpp
// compile with: /EHsc
// Illustrates how to use the getline function to read a
// line of text from the keyboard.
//
// Functions:
//
//    getline       Returns a string from the input stream.
//////////////////////////////////////////////////////////////////////

#pragma warning(disable:4786)
#include <string>
#include <iostream>

using namespace std ;

int main()
{
   string s1;
   cout << "Enter a sentence (use <space> as the delimiter): ";
   getline(cin,s1, ' ');
   cout << "You entered: " << s1 << endl;;
}
 


另外:
读取单个字符,可以用这个函数
int istream::get();




引用:
用法:

char name[256];
cin.getline(name,256);

。。。。。。。。。。。。。。

++
楼上的方法也不错,
当不习惯使用string, 或者内存比较紧张,可以用这种方法。