数,因为这个getline函数的参数使用了string字符串,所以声明在了
头文件中了。
声明如下:
istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
简单的示例如下:
void test2(){
string line;
while(getline(cin,line))
cout<
}
注意此处也是不读入换行符的。
所以在C++中读取一行的函数是不读入换行符的,而GCC中getline函数是读入换行符的。可以理解为,一般情况下不读入,特别的是GCC的读入。
C/C++中的getline() getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。
注释: 在函数遇到和结束定界符相等的字符时函数结束,同时函数抽出定界符,此种情况下该定界符既不被放回输入流,也不被放入要生成的字符串。所以由此可以理解输入结束后的第一个回车是定界符,被确认后抛弃,而第二个才是程序执行运行时正常需要的!
C++有getline()函数.
C 有 fgets(), gets() 函数,也有getline.
用于读取一行字符直到换行符,包括换行符(换行符用'\0'替换掉了).
使用条件
linux标准C中使用条件:
#define _GNU_SOURCE
#include
函数声明:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
返回值
成功:返回读取的字节数。
失败:返回-1。
参数:
lineptr:指向存放该行字符的指针,如果是NULL,则有系统帮助malloc,请在使用完成后free释放。
n:如果是由系统malloc的指针,请填0
stream:文件描述符
#define _GNU_SOURCE
#include
#include
ssize_t getline(char **lineptr, size_t *n, FILE *stream); int main(void) { FILE *fp; char * line = NULL; size_t len = 0; ssize_t read; fp = fopen("/etc/motd", "r"); if (fp == NULL) exit(EXIT_FAILURE); while ((read = getline(&line, &len, fp)) != -1) { printf("Retrieved line of length %zu :\n", read); printf("%s", line); } if (line) free(line); exit(EXIT_SUCCESS); }
C++格式的cin.getline()
#include
using namespace std;
int main( )
{
cout << "Type the letter 'a': ";
ws( cin );
char c[10]={'\0'};
cin.getline(c,10,'#');//将getline换成get试试,情况就大不相同了
cout<
C++中有两个getline函数,这两个函数分别定义在不同的头文件中。 1.getline()是定义在
中的一个行数,用于输入一行string,以enter结束。 函数原型:getline(cin,str); cin:istream类的输入流对象 str:待输入的string对象
//《C++ primary plus》第四章编程练习题1
#include
#include
using namespace std; string fname; string lname; char grade; int age; int main() { cout<<"What is your first name?"; getline(cin,fname); cout<<"What is your last name?"; getline(cin,lname); cout<<"What letter grade do you deserve?"; cin>>grade; cout<<"What is your age?"; cin>>age; cout<<"Name:"<
2.cin.getline(char ch[],size)是cin 的一个成员函数,定义在
中,用于输入行指定size的字符串,以enter结束。若输入长度超出size,则不再接受后续的输入。
//《C++ primary plus》第四章编程练习题1
#include
using namespace std;
char fname[5];
char lname[5];
char grade;
int age;
int main()
{
cout<<"What is your first name?";
cin.getline(fname,5);
cout<<"What is your last name?";
cin.getline(lname,5);
cout<<"What letter grade do you deserve?";
cin>>grade;
cout<<"What is your age?";
cin>>age;
cout<<"Name:"<
|