<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中getline的用法

        c中getline的用法

        時間: 長思709 分享

        c中getline的用法

          下面小編就跟你們詳細介紹下c中getline的用法的用法,希望對你們有用。

          c中getline的用法的用法如下:

          getline函數是一個比較常見的函數。根據它的名字我們就可以知道這個函數是來完成讀入一行數據的。現在對getline函數進行一個總結。

          在標準C語言中,getline函數是不存在的。

          下面是一個簡單的實現方式:

          復制代碼

          int getline_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          s[i]='

        學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中getline的用法

        c中getline的用法

        時間: 長思709 分享

        c中getline的用法

          下面小編就跟你們詳細介紹下c中getline的用法的用法,希望對你們有用。

          c中getline的用法的用法如下:

          getline函數是一個比較常見的函數。根據它的名字我們就可以知道這個函數是來完成讀入一行數據的。現在對getline函數進行一個總結。

          在標準C語言中,getline函數是不存在的。

          下面是一個簡單的實現方式:

          復制代碼

          int getline_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          下面是一個簡單的測試程序:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline_(s,100))>0)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          但是這個實現是有問題的,就是遇到空行的時候也會停止的。

          為了解決這個問題,我們需要重新考慮while循環的判斷條件。

          在上面的實現中,我們是遇到EOF和換行'\n'的時候都停止 ,然后通過判斷所讀到的字符串的長度是否大于0來判斷是否結束。

          為了能讀入空行,我們需要判斷一下是否讀入的是結尾EOF,如果不是就繼續讀取就可以了。

          還有一點,EOF是什么?

          EOF是C語言中為了區分有效數據和輸入結束符的。

          C語言采用的解決辦法是:在沒有輸入時getchar函數將返回一個特殊值,這個特殊值與任何實際字符都不同。這個值成為EOF(end of file ,文件結束)。我們在聲明變量c 的時候,必須讓它大到足以存放getchar函數返回的任何值。之所以不把c聲明成char類型,是因為它必須足夠大,除了能存儲任何可能的字符外還要能存儲文件結束符EOF。

          EOF的輸入由系統鎖定。windows下是ctrl+z,linux/unix下是ctrl+d。

          下面是給出的修改后的getline函數

          復制代碼

          int getline2_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          s[i]='\0';

          return i;

          }

          復制代碼

          如果是文件結尾(c==EOF&&i==0)的話,我們就返回-1,通過判斷返回值是否為-1來決定是否繼續入輸入:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline2_(s,100))!=-1)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          這樣話就可以正確讀入所有的輸入了。

          在gcc編譯器中,對標準庫進行了擴展,加入了一個getline函數。該函數的定義如下:

          #include <stdio.h>

          ssize_t getline(char **lineptr, size_t *n, FILE *stream);

          其中*lineptr指向一個動態分配的內存區域。*n是所分配內存的長度。如果*lineptr是NULL的話,getline函數會自動進行動態內存的分配(忽略*n的大小),所以使用這個函數非常注意的就使用要注意自己進行內存的釋放。

          如果*lineptr分配了內存,但在使用過程中發現所分配的內存不足的話,getline函數會調用realloc函數來重新進行內存的分配,同時更新*lineptr和*n。

          注意*lineptr指向的是一個動態分配的內存,由malloc,calloc或realloc分配的,不能是靜態分配的數組。

          下面是使用這個函數情況,事先分配了動態內存。

          復制代碼

          void test2(){

          int read;

          int len=100;

          char *line=NULL;

          if((line=malloc((len+1)))==NULL){

          printf("Can't get memory\n");

          exit(-1);

          }

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          下面是一個沒有提前進行內存分配的情況:

          復制代碼

          void test3(){

          int read;

          int len=0;

          char *line=NULL;

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          同樣最后要進行內存的釋放。

          這兒還要注意一個問題就是,getline函數讀入的一行是包括最后的換行符的。之前我們寫的函數是不包括這個的。下面我們進行修改一下,也讀入換行符。

          復制代碼

          int getline3_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          if(c=='\n')

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          這樣也讀入了換行符。這樣的話,這個getline函數就不錯了。

          在C++中為了使用的方便,C++在標準庫中添加了getline函數。

          其實在C++中對不同的輸入流對象都定義了一個getline函數,即:

          std::fstream::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

          這兒我們討論標準輸入對象的getline函數,其他的對象的情都是類似的。

          在頭文件<iostream>中聲明了getline函數:

          istream::getline

          istream& getline (char* s, streamsize n );

          istream& getline (char* s, streamsize n, char delim );

          函數是C類型的數組。因為C++中允許對函數進行重載,所以可以有多個同名函數。delim參數是指定分隔符。如果不指定的話,默認使用'\n'

          下面是一個例子:

          void test1(){

          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;

          }

          注意此處也是不讀入換行符的。

          所以在C++中讀取一行的函數是不讀入換行符的,而GCC中getline函數是讀入換行符的。可以理解為,一般情況下不讀入,特別的是GCC的讀入。

        ';

          return i;

          }

          復制代碼

          下面是一個簡單的測試程序:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline_(s,100))>0)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          但是這個實現是有問題的,就是遇到空行的時候也會停止的。

          為了解決這個問題,我們需要重新考慮while循環的判斷條件。

          在上面的實現中,我們是遇到EOF和換行'\n'的時候都停止 ,然后通過判斷所讀到的字符串的長度是否大于0來判斷是否結束。

          為了能讀入空行,我們需要判斷一下是否讀入的是結尾EOF,如果不是就繼續讀取就可以了。

          還有一點,EOF是什么?

          EOF是C語言中為了區分有效數據和輸入結束符的。

          C語言采用的解決辦法是:在沒有輸入時getchar函數將返回一個特殊值,這個特殊值與任何實際字符都不同。這個值成為EOF(end of file ,文件結束)。我們在聲明變量c 的時候,必須讓它大到足以存放getchar函數返回的任何值。之所以不把c聲明成char類型,是因為它必須足夠大,除了能存儲任何可能的字符外還要能存儲文件結束符EOF。

          EOF的輸入由系統鎖定。windows下是ctrl+z,linux/unix下是ctrl+d。

          下面是給出的修改后的getline函數

          復制代碼

          int getline2_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          s[i]='

        學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中getline的用法

        c中getline的用法

        時間: 長思709 分享

        c中getline的用法

          下面小編就跟你們詳細介紹下c中getline的用法的用法,希望對你們有用。

          c中getline的用法的用法如下:

          getline函數是一個比較常見的函數。根據它的名字我們就可以知道這個函數是來完成讀入一行數據的。現在對getline函數進行一個總結。

          在標準C語言中,getline函數是不存在的。

          下面是一個簡單的實現方式:

          復制代碼

          int getline_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          下面是一個簡單的測試程序:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline_(s,100))>0)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          但是這個實現是有問題的,就是遇到空行的時候也會停止的。

          為了解決這個問題,我們需要重新考慮while循環的判斷條件。

          在上面的實現中,我們是遇到EOF和換行'\n'的時候都停止 ,然后通過判斷所讀到的字符串的長度是否大于0來判斷是否結束。

          為了能讀入空行,我們需要判斷一下是否讀入的是結尾EOF,如果不是就繼續讀取就可以了。

          還有一點,EOF是什么?

          EOF是C語言中為了區分有效數據和輸入結束符的。

          C語言采用的解決辦法是:在沒有輸入時getchar函數將返回一個特殊值,這個特殊值與任何實際字符都不同。這個值成為EOF(end of file ,文件結束)。我們在聲明變量c 的時候,必須讓它大到足以存放getchar函數返回的任何值。之所以不把c聲明成char類型,是因為它必須足夠大,除了能存儲任何可能的字符外還要能存儲文件結束符EOF。

          EOF的輸入由系統鎖定。windows下是ctrl+z,linux/unix下是ctrl+d。

          下面是給出的修改后的getline函數

          復制代碼

          int getline2_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          s[i]='\0';

          return i;

          }

          復制代碼

          如果是文件結尾(c==EOF&&i==0)的話,我們就返回-1,通過判斷返回值是否為-1來決定是否繼續入輸入:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline2_(s,100))!=-1)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          這樣話就可以正確讀入所有的輸入了。

          在gcc編譯器中,對標準庫進行了擴展,加入了一個getline函數。該函數的定義如下:

          #include <stdio.h>

          ssize_t getline(char **lineptr, size_t *n, FILE *stream);

          其中*lineptr指向一個動態分配的內存區域。*n是所分配內存的長度。如果*lineptr是NULL的話,getline函數會自動進行動態內存的分配(忽略*n的大小),所以使用這個函數非常注意的就使用要注意自己進行內存的釋放。

          如果*lineptr分配了內存,但在使用過程中發現所分配的內存不足的話,getline函數會調用realloc函數來重新進行內存的分配,同時更新*lineptr和*n。

          注意*lineptr指向的是一個動態分配的內存,由malloc,calloc或realloc分配的,不能是靜態分配的數組。

          下面是使用這個函數情況,事先分配了動態內存。

          復制代碼

          void test2(){

          int read;

          int len=100;

          char *line=NULL;

          if((line=malloc((len+1)))==NULL){

          printf("Can't get memory\n");

          exit(-1);

          }

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          下面是一個沒有提前進行內存分配的情況:

          復制代碼

          void test3(){

          int read;

          int len=0;

          char *line=NULL;

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          同樣最后要進行內存的釋放。

          這兒還要注意一個問題就是,getline函數讀入的一行是包括最后的換行符的。之前我們寫的函數是不包括這個的。下面我們進行修改一下,也讀入換行符。

          復制代碼

          int getline3_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          if(c=='\n')

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          這樣也讀入了換行符。這樣的話,這個getline函數就不錯了。

          在C++中為了使用的方便,C++在標準庫中添加了getline函數。

          其實在C++中對不同的輸入流對象都定義了一個getline函數,即:

          std::fstream::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

          這兒我們討論標準輸入對象的getline函數,其他的對象的情都是類似的。

          在頭文件<iostream>中聲明了getline函數:

          istream::getline

          istream& getline (char* s, streamsize n );

          istream& getline (char* s, streamsize n, char delim );

          函數是C類型的數組。因為C++中允許對函數進行重載,所以可以有多個同名函數。delim參數是指定分隔符。如果不指定的話,默認使用'\n'

          下面是一個例子:

          void test1(){

          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;

          }

          注意此處也是不讀入換行符的。

          所以在C++中讀取一行的函數是不讀入換行符的,而GCC中getline函數是讀入換行符的。可以理解為,一般情況下不讀入,特別的是GCC的讀入。

        ';

          return i;

          }

          復制代碼

          如果是文件結尾(c==EOF&&i==0)的話,我們就返回-1,通過判斷返回值是否為-1來決定是否繼續入輸入:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline2_(s,100))!=-1)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          這樣話就可以正確讀入所有的輸入了。

          在gcc編譯器中,對標準庫進行了擴展,加入了一個getline函數。該函數的定義如下:

          #include <stdio.h>

          ssize_t getline(char **lineptr, size_t *n, FILE *stream);

          其中*lineptr指向一個動態分配的內存區域。*n是所分配內存的長度。如果*lineptr是NULL的話,getline函數會自動進行動態內存的分配(忽略*n的大小),所以使用這個函數非常注意的就使用要注意自己進行內存的釋放。

          如果*lineptr分配了內存,但在使用過程中發現所分配的內存不足的話,getline函數會調用realloc函數來重新進行內存的分配,同時更新*lineptr和*n。

          注意*lineptr指向的是一個動態分配的內存,由malloc,calloc或realloc分配的,不能是靜態分配的數組。

          下面是使用這個函數情況,事先分配了動態內存。

          復制代碼

          void test2(){

          int read;

          int len=100;

          char *line=NULL;

          if((line=malloc((len+1)))==NULL){

          printf("Can't get memory\n");

          exit(-1);

          }

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          下面是一個沒有提前進行內存分配的情況:

          復制代碼

          void test3(){

          int read;

          int len=0;

          char *line=NULL;

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          同樣最后要進行內存的釋放。

          這兒還要注意一個問題就是,getline函數讀入的一行是包括最后的換行符的。之前我們寫的函數是不包括這個的。下面我們進行修改一下,也讀入換行符。

          復制代碼

          int getline3_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          if(c=='\n')

          s[i++]=c;

          s[i]='

        學習啦 > 學習英語 > 專業英語 > 計算機英語 > c中getline的用法

        c中getline的用法

        時間: 長思709 分享

        c中getline的用法

          下面小編就跟你們詳細介紹下c中getline的用法的用法,希望對你們有用。

          c中getline的用法的用法如下:

          getline函數是一個比較常見的函數。根據它的名字我們就可以知道這個函數是來完成讀入一行數據的。現在對getline函數進行一個總結。

          在標準C語言中,getline函數是不存在的。

          下面是一個簡單的實現方式:

          復制代碼

          int getline_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          下面是一個簡單的測試程序:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline_(s,100))>0)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          但是這個實現是有問題的,就是遇到空行的時候也會停止的。

          為了解決這個問題,我們需要重新考慮while循環的判斷條件。

          在上面的實現中,我們是遇到EOF和換行'\n'的時候都停止 ,然后通過判斷所讀到的字符串的長度是否大于0來判斷是否結束。

          為了能讀入空行,我們需要判斷一下是否讀入的是結尾EOF,如果不是就繼續讀取就可以了。

          還有一點,EOF是什么?

          EOF是C語言中為了區分有效數據和輸入結束符的。

          C語言采用的解決辦法是:在沒有輸入時getchar函數將返回一個特殊值,這個特殊值與任何實際字符都不同。這個值成為EOF(end of file ,文件結束)。我們在聲明變量c 的時候,必須讓它大到足以存放getchar函數返回的任何值。之所以不把c聲明成char類型,是因為它必須足夠大,除了能存儲任何可能的字符外還要能存儲文件結束符EOF。

          EOF的輸入由系統鎖定。windows下是ctrl+z,linux/unix下是ctrl+d。

          下面是給出的修改后的getline函數

          復制代碼

          int getline2_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          s[i]='\0';

          return i;

          }

          復制代碼

          如果是文件結尾(c==EOF&&i==0)的話,我們就返回-1,通過判斷返回值是否為-1來決定是否繼續入輸入:

          復制代碼

          int test1(){

          char s[100];

          int len;

          while((len=getline2_(s,100))!=-1)

          printf("%s\n",s);

          return 0;

          }

          復制代碼

          這樣話就可以正確讀入所有的輸入了。

          在gcc編譯器中,對標準庫進行了擴展,加入了一個getline函數。該函數的定義如下:

          #include <stdio.h>

          ssize_t getline(char **lineptr, size_t *n, FILE *stream);

          其中*lineptr指向一個動態分配的內存區域。*n是所分配內存的長度。如果*lineptr是NULL的話,getline函數會自動進行動態內存的分配(忽略*n的大小),所以使用這個函數非常注意的就使用要注意自己進行內存的釋放。

          如果*lineptr分配了內存,但在使用過程中發現所分配的內存不足的話,getline函數會調用realloc函數來重新進行內存的分配,同時更新*lineptr和*n。

          注意*lineptr指向的是一個動態分配的內存,由malloc,calloc或realloc分配的,不能是靜態分配的數組。

          下面是使用這個函數情況,事先分配了動態內存。

          復制代碼

          void test2(){

          int read;

          int len=100;

          char *line=NULL;

          if((line=malloc((len+1)))==NULL){

          printf("Can't get memory\n");

          exit(-1);

          }

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          下面是一個沒有提前進行內存分配的情況:

          復制代碼

          void test3(){

          int read;

          int len=0;

          char *line=NULL;

          while((read=getline(&line,&len,stdin))!=-1)

          printf("%s\n",line);

          free(line);

          }

          復制代碼

          同樣最后要進行內存的釋放。

          這兒還要注意一個問題就是,getline函數讀入的一行是包括最后的換行符的。之前我們寫的函數是不包括這個的。下面我們進行修改一下,也讀入換行符。

          復制代碼

          int getline3_(char s[],int lim){

          int c,i;

          i=0;

          while((c=getchar())!=EOF&&c!='\n'&&i<lim-1)

          s[i++]=c;

          if(c==EOF&&i==0)

          return -1;

          if(c=='\n')

          s[i++]=c;

          s[i]='\0';

          return i;

          }

          復制代碼

          這樣也讀入了換行符。這樣的話,這個getline函數就不錯了。

          在C++中為了使用的方便,C++在標準庫中添加了getline函數。

          其實在C++中對不同的輸入流對象都定義了一個getline函數,即:

          std::fstream::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

          這兒我們討論標準輸入對象的getline函數,其他的對象的情都是類似的。

          在頭文件<iostream>中聲明了getline函數:

          istream::getline

          istream& getline (char* s, streamsize n );

          istream& getline (char* s, streamsize n, char delim );

          函數是C類型的數組。因為C++中允許對函數進行重載,所以可以有多個同名函數。delim參數是指定分隔符。如果不指定的話,默認使用'\n'

          下面是一個例子:

          void test1(){

          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;

          }

          注意此處也是不讀入換行符的。

          所以在C++中讀取一行的函數是不讀入換行符的,而GCC中getline函數是讀入換行符的。可以理解為,一般情況下不讀入,特別的是GCC的讀入。

        ';

          return i;

          }

          復制代碼

          這樣也讀入了換行符。這樣的話,這個getline函數就不錯了。

          在C++中為了使用的方便,C++在標準庫中添加了getline函數。

          其實在C++中對不同的輸入流對象都定義了一個getline函數,即:

          std::fstream::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

          這兒我們討論標準輸入對象的getline函數,其他的對象的情都是類似的。

          在頭文件<iostream>中聲明了getline函數:

          istream::getline

          istream& getline (char* s, streamsize n );

          istream& getline (char* s, streamsize n, char delim );

          函數是C類型的數組。因為C++中允許對函數進行重載,所以可以有多個同名函數。delim參數是指定分隔符。如果不指定的話,默認使用'\n'

          下面是一個例子:

          void test1(){

          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;

          }

          注意此處也是不讀入換行符的。

          所以在C++中讀取一行的函數是不讀入換行符的,而GCC中getline函數是讀入換行符的。可以理解為,一般情況下不讀入,特別的是GCC的讀入。

        熱門文章

        537179 主站蜘蛛池模板: 六十路老熟妇乱子伦视频| 日韩av不卡一区二区在线| 国产乱子伦一区二区三区视频播放| 天堂资源在线| 伊人久久大香线蕉综合观| 国产精品午夜福利免费看| 欧美成人精品手机在线| 色综合色国产热无码一| 亚洲成av人影院无码不卡| 人妻一区二区三区三区| 97亚洲色欲色欲综合网| 午夜久久一区二区狠狠干| 在线国产综合一区二区三区 | 欧美黑人性暴力猛交喷水| 亚洲精品人妻中文字幕| 黄色av免费在线上看| 日韩国产精品区一区二区| 蜜桃av亚洲精品一区二区| 极品美女自拍偷精品视频| 国产精品视频一品二区三| 亚洲高清在线天堂精品| 亚洲日韩性欧美中文字幕| 亚洲日韩av无码| 国内精品无码一区二区三区| 亚洲AV无码国产精品夜色午夜| 国产蜜臀久久av一区二区| 久久99精品久久久大学生| 国产69精品久久久久乱码免费| www成人国产高清内射| 日本中文字幕在线播放| 亚洲日本VA午夜在线电影| 欧美日韩理论| 免费无码AV一区二区波多野结衣| 亚洲女人αV天堂在线| 国产一区二区高清不卡| 国产一本一道久久香蕉| 亚洲国产精品一区在线看| 久久伊人精品影院一本到综合| 蜜臀午夜一区二区在线播放| 久久精品午夜视频| 亚洲日韩国产二区无码|