從標准輸入讀取一行字符串的方法


從標准輸入讀取一行字符串的方法

1 getline讀取一行

C++中定義了一個在std名字空間的全局函數getline,因為這個getline函數的參數使用了string字符串,所以聲明在了< string>頭文件中了。

getline利用cin可以從標准輸入設備鍵盤讀取一行,當遇到如下三種情況會結束讀操作:1)到文件結束,2)遇到函數的定界符,3)輸入達到最大限度。

函數原型有兩個重載形式:

istream& getline ( istream& is, string& str);//默認以換行符結束

istream& getline ( istream& is, string& str, char delim);

使用示例:

#include <string>

#include <iostream>

using namespace std;

 

int main()

{

    string str;

    getline(cin,str);

    cout<<str<<endl;

    system("pause");

    return 0;

}

輸入:hello world[回車],輸出:

注意,getline遇到結束符時,會將結束符一並讀入指定的string中,再將結束符替換為空字符。因此,進行從鍵盤讀取一行字符時,建議使用getline,較為安全。但是,最好還是要進行標准輸入的安全檢查,提高程序容錯能力。

cin.getline()類似,但是cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函數。

5.2 gets讀取一行

gets是C中的庫函數,在< stdio.h>申明,從標准輸入設備讀字符串,可以無限讀取,不會判斷上限,以回車結束或者EOF時停止讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。
函數原型:char *gets( char *buffer );
使用示例:

#include <iostream>

using namespace std;

int main()

{

    char array[20]={NULL};

    gets(array);

    cout<<array<<endl;

    system("pause");

    return 0;

}

 

輸入:I am lvlv[回車],輸出:

由於該函數是C的庫函數,所以不建議使用,既然是C++程序,就盡量使用C++的庫函數吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM