在C++中为了使用的方便,C++在标准库中添加了getline函数。
其实在C++中对不同的输入流对象都定义了一个getline函数,即:
std::fstream::getline这儿我们讨论标准输入对象的getline函数,其他的对象的情都是类似的。
std::istream::getline
std::ifstream::getline
std::iostream::getline
std::wfstream::getline
std::wistream::getline
std::wifstream::getline
std::wiostream::getline
std::stringstream::getline
std::basic_fstream::getline
std::basic_istream::getline
std::istringstream::getline
std::wstringstream::getline
std::basic_ifstream::getline
std::basic_iostream::getline
std::wistringstream::getline
std::basic_stringstream::getline
std::basic_istringstream::getline
在头文件<iostream>中声明了getline函数:
istream::getline函数是C类型的数组。因为C++中允许对函数进行重载,所以可以有多个同名函数。delim参数是指定分隔符。如果不指定的话,默认使用'\n'
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
下面是一个例子:
void test1(){
char line[ 100];
while(cin.getline(line, 100))
cout<<line<<endl;
}
char line[ 100];
while(cin.getline(line, 100))
cout<<line<<endl;
}
注意这儿的getline是要读入空白符。但是不包括最后的换行符。
C++中还定义了一个在std名字空间的全局函数,因为这个getline函数的参数使用了string字符串,所以声明在了<string>头文件中了。
声明如下:
istream& getline ( istream& is, string& str, char delim );简单的示例如下:
istream& getline ( istream& is, string& str );
void test2(){
string line;
while(getline(cin,line))
cout<<line<<endl;
}
string line;
while(getline(cin,line))
cout<<line<<endl;
}