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
广告