C++ cin.getline用法詳解

2020-07-16 10:04:38
使用 C++ 字元陣列與使用 string 物件還有另一種不同的方式,就是在處理它們時必須使用不同的函數集。例如,要讀取一行輸入,必須使用 cin.getline 而不是 getline 函數。這兩個的名字看起來很像,但它們是兩個不同的函數,不可互換。

與 getline 一樣,cin.getline 允許讀取包含空格的字串。它將繼續讀取,直到它讀取至最大指定的字元數,或直到按下了確認鍵。以下是其用法範例:

cin.getline(sentence, 20);

getline 函數使用兩個用逗號分隔的引數。第一個引數是要儲存字串的陣列的名稱。第二個引數是陣列的大小。當 cin.getline 語句執行時,cin 讀取的字元數將比該數位少一個,為 null 終止符留出空間。這樣就不需要使用 setw 操作符或 width 函數。以上語句最多可讀取 19 個字元,null 終止符將自動放在陣列最後一個字元的後面。

下面的程式演示了 getline 函數的用法,它最多可以讀取 80 個字元:
// This program demonstrates cinT s getline function
// to read a line of text into a C-string.
#include <iostream>、
using namespace std;

int main()
{
    const int SIZE = 81;
    char sentence[SIZE];
    cout << "Enter a sentence: ";
    cin.getline (sentence, SIZE);
    cout << "You entered " << sentence << endl;
    return 0;
}
程式輸出結果:

Enter a sentence: To be, or not to be, that is the question.
You entered To be, or not to be, that is the question.