gets(), getline(), cin.getline()


gets(str), getline(cin, s), cin.getline(str, len),這三個函數都是讀入一行字符串的函數,下面是這三個函數的區別

1. gets() 函數是 C 語言的函數,它接受的參數是字符數組, gets輸入字符串時,不進行數組下標的檢查,也就是說當你的數組長度是n時,輸入超過該長度的字符串的時候,編譯不會出錯,但是運行的時候會出現數組越界或者內存泄漏的錯誤,所以現在有部分編譯器已經不支持這個函數了,比如 PTA 就已經不支持這個函數了gets()函數的用法如下:

char str[20];
gets(str);

 

2. getline() 函數是 C++ 函數,他接受的參數是 一個輸入流和一個string類型的字符串,要使用這個函數必須加上 #include <string> 這個頭文件和 using name space std; 這個命名空間。getline()函數的用法如下:

#include <string>
using namespace std;

string s;
getline(cin, s);

 

3. cin.getline()函數也是 C++ 函數,它接受的參數是一個 C風格字符串(也就是一個字符數組),和一個最大長度,要使用這個函數,必須加上#include <iostream> 這個頭文件 和using namespace std;這個命名空間。cin.getline()函數的用法如下:

#include <iostream>
using namespace std;

char str[20];
cin.getline(str, 20);

注意:(1)cin.getline()實際上有三個參數,cin.getline(接收字符串的變量,接收字符個數,結束字符)
   (2)當第三個參數省略時,系統默認為'\n'

 


免責聲明!

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



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