C++中本质上有两种getline函数,一种在头文件
一、在
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
作用是从istream中读取至多n个字符保存在s对应的数组中。即使还没读够n个字符,如果遇到换行符'\n'(第一种形式)或delim(第二种形式),则读取终止,'\n'或delim都不会被保存进s对应的数组中。
二、在
istream& getline (istream& is, string& str, char delim);istream& getline (istream&& is,
string& str, char delim);istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
用法和上一种类似,不过要读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
扩展资料:
getline不是C库函数,而是gcc的扩展定义或者C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。
1)到文件结束,
2)遇到函数的定界符,
3)输入达到最大限度。
参考资料:getline函数-百度百科
C++中本质上有两种getline函数,一种在头文件
在
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
作用是从istream中读取至多n个字符保存在s对应的数组中。即使还没读够n个字符,如果遇到换行符'\n'(第一种形式)或delim(第二种形式),则读取终止,'\n'或delim都不会被保存进s对应的数组中。
样例程序(摘自cplusplus.com):
// istream::getline example
#include// 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;
}
在
istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
用法和上一种类似,不过要读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
样例程序(摘自cplusplus.com):
// extract to string
#include
#include
int main ()
{
std::string name;
std::cout << "Please, enter your full name: ";
std::getline (std::cin,name);
std::cout << "Hello, " << name << "!\n";
return 0;
}
C++中本质上有两种getline函数,一种在头文件
在
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
作用是从istream中读取至多n个字符保存在s对应的数组中。即使还没读够n个字符,如果遇到换行符'\n'(第一种形式)或delim(第二种形式),则读取终止,'\n'或delim都不会被保存进s对应的数组中。
在
istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
用法和上一种类似,不过要读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
参考资料:C++中,getline的详细解析
C++中本质上有两种getline函数,一种在头文件
一、在
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
作用是从istream中读取至多n个字符保存在s对应的数组中。即使还没读够n个字符,如果遇到换行符'\n'(第一种形式)或delim(第二种形式),则读取终止,'\n'或delim都不会被保e79fa5e98193e59b9ee7ad9431333365666239存进s对应的数组中。
二、在
istream& getline (istream& is, string& str, char delim);istream& getline (istream&& is,
string& str, char delim);istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
用法和上一种类似,不过要读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。
扩展资料:
getline不是C库函数,而是gcc的扩展定义或者C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。
1)到文件结束,
2)遇到函数的定界符,
3)输入达到最大限度。
getline()函数有两个版本,关于这个三个参数的版本,它的第一个参数是指向字符数组的指针,因为你定义的是:char *s(只说明s是指向字符类型的指针,但没有说明它是指向字符数组的),这样能通过编译,但会运行错误,因为编译器在编译时不知道s是指向字符数组的,它以为是指向一个字符的,就只为 s所指向的内容分配一个字节的内存。
char s[1000]; (中括号里的数字小于1000可能会出错,但不一定出错,原因上面已讲)
或者char* s=new char[1000];
或者char a[1000];char * s=a;
或者char a[1000];char *s=&a[0];