设为首页 加入收藏

TOP

C/C++中的getline函数总结(二)
2015-11-21 01:02:07 来源: 作者: 【 】 浏览:6
Tags:C/C getline 函数 总结
数,因为这个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:"<
                      
                     
                    
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C/C++源代码书写规范 下一篇[LeetCode] Maximum Depth of Bin..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: