[c++]cin.get()和cin.getline()如何读取string字符串呢
[c++]cin.get()和cin.getline()怎么读取string字符串呢?
![[c++]cin.get()和cin.getline()如何读取string字符串呢 [c++]cin.get()和cin.getline()如何读取string字符串呢](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzA4LzE0LzEyNTc0OTI5OC5naWY=)
难道是要使用cin.get读入到char数组里 然后再strcpy到string里面?
------解决方案--------------------
用法:
函数原型:
从函数原型可以看出来cin.getline和cin.get只能接受C风格的字符串。
------解决方案--------------------
读取字符串到C++string 对象中,可以用这个函数
VC9的实现如下(原型声明):
VC9 的示例代码:
另外:
读取单个字符,可以用这个函数
++
楼上的方法也不错,
当不习惯使用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();
++
楼上的方法也不错,
当不习惯使用string, 或者内存比较紧张,可以用这种方法。