输入类函数总结
一.getline();
1.getline在c++的库函数中有两个,一个是包含在string文件中
template<typename _CharT, typename _Traits, typename _Alloc>
inline basic_istream<_CharT, _Traits>&
getline(basic_istream<_CharT, _Traits>& __is,
basic_string<_CharT, _Traits, _Alloc>& __str)
{ return getline(__is, __str, __is.widen('\n')); }
函数的参数是(流,str);
// extract to string
#include <iostream>
#include <string>
int main ()
{
std::string name;
std::cout << "Please, enter your full name: ";
std::getline (std::cin,name);
std::cout << "Hello, " << name << "!\n";
return 0;
}
2.第二个包含在iostream中
__istream_type&
getline(char_type* __s, streamsize __n)
{ return this->getline(__s, __n, this->widen('\n')); }
__istream_type&
getline(char_type* __s, streamsize __n, char_type __delim);
这两个是成员函数,需要对象来调用
// istream::getline example
#include <iostream> // std::cin, std::cout
int main () {
char name[256], title[256];
std::cout << "Please, enter your name: ";
std::cin.getline (name,256);
std::cout << "Please, enter your favourite movie: ";
std::cin.getline (title,256);
std::cout << name << "'s favourite movie is " << title;
return 0;
}
二.gets();
gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
此函数比较危险,谨慎使用
三.get();
1.istream& get ( char& c );
2.istream& get ( char* s, streamsize n );
3.istream& get ( char* s, streamsize n, char delim );
后面的两个函数和getline的区别是getline调用之后指针的位置指向了delim之后的字符,而get函数调用之后指针位置在delim所处的位置。
三.scanf()函数