C++ istream::getline() 函式



C++ 的 std::istream::getline() 函式用於從輸入流中讀取一行文字到字串或字元陣列中。它在遇到換行符或達到指定的最大字元數時停止讀取,以先到者為準。換行符會被提取但不會儲存。

它對於處理可能包含空格或其他空白字元的輸入很有用,因為它會捕獲整行。

語法

以下是 std::istream::getline() 函式的語法。

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

引數

  • s − 指向字元陣列的指標,提取的字元作為 C 字串儲存在此處。
  • n − 指示寫入 s 的最大字元數(包括終止空字元)。
  • delim − 指示顯式的分隔符

返回值

此函式返回 basic_istream 物件(*this)。

異常

如果丟擲異常,則物件處於有效狀態。

資料競爭

修改 s 指向的陣列中的元素和流物件。

示例

在下面的示例中,我們將考慮 getline() 函式的基本用法。

#include <iostream>
int main()
{
    char x[20];
    std::cout << "Enter a line of text: ";
    std::cin.getline(x, 20);
    std::cout << "Entered Input : " << x << std::endl;
    return 0;
}

輸出

以上程式碼的輸出如下:

Enter a line of text:  Hello, Namaste
Entered Input :  Hello, Namaste

示例

考慮以下示例,我們將處理空輸入。

#include <iostream>
int main()
{
    char buffer[10];
    std::cout << "Enter a text or press Enter : ";
    std::cin.getline(buffer, 10);
    if (buffer[0] == '\0') {
        std::cout << "No Input Provided." << std::endl;
    } else {
        std::cout << "Entered Input : " << buffer << std::endl;
    }
    return 0;
}

輸出

以下是以上程式碼的輸出:

Enter a text or press Enter : 
No Input Provided.
istream.htm
廣告