gets(str), getline(cin, s), cin.getline(str, len),這三個函數都是讀入一行字符串的函數,下面是這三個函數的區別ios
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()函數的用法以下:spa
#include <iostream> using namespace std; char str[20]; cin.getline(str, 20);
注意:(1)cin.getline()實際上有三個參數,cin.getline(接收字符串的變量,接收字符個數,結束字符)
(2)當第三個參數省略時,系統默認爲'\n'code