C++ istream::get() 函数



C++ 的std::istream::get()函数用于从输入流中读取字符。它可以以多种模式运行:读取单个字符、读取字符到缓冲区直到遇到指定的定界符,或者读取字符到指定大小的缓冲区。

默认情况下,此函数不会跳过空格,这使其与operator>>等函数有所区别。

语法

以下是 std::istream::get() 函数的语法。

int get();istream& get (char& c);
or
istream& get (char* s, streamsize n);istream& get (char* s, streamsize n, char delim);
or	
istream& get (streambuf& sb);istream& get (streambuf& sb, char delim);

参数

  • c - 表示存储提取值的字符的引用。
  • s - 表示指向字符数组的指针,提取的字符作为 C 字符串存储在此数组中。
  • n - 表示写入 s 的最大字符数(包括终止空字符)。
  • delim - 表示显式定界符。
  • sb - 表示一个 basic_streambuf 对象,字符将复制到其控制的输出序列上。

返回值

此函数返回读取的字符,或者如果流中没有字符可用则返回文件结束值 (traits_type::eof())(请注意,在这种情况下,还会设置 failbit 标志)。

异常

如果抛出异常,则对象处于有效状态。

数据竞争

修改 c、sb 或 s 指向的数组中的元素,并修改流对象。

示例

在下面的示例中,我们将读取单个字符。

#include <iostream>
int main()
{
    char x;
    std::cout << "Enter A Character : ";
    std::cin.get(x);
    std::cout << "Entered Character : " << x << std::endl;
    return 0;
}

输出

以上代码的输出如下:

Enter A Character : B
Entered Character : B

示例

考虑以下示例,我们将使用 get() 从输入流中读取字符,直到遇到定界符。

#include <iostream>
int main()
{
    char a[10];
    std::cout << "Enter Input : ";
    std::cin.get(a, 10, ',');
    std::cout << "Entered Input : " << a << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

Enter Input : Hello, Namaste!
Entered Input : Hello
istream.htm
广告