C++ istream::readsome() 函数



C++ 的std::istream::readsome()函数用于从输入流中读取指定数量的字符到缓冲区中,不会阻塞。它最多读取指定的限制数量或可用字符数量,取较小者。

与需要等待完全填充缓冲区的read()函数不同,readsome()函数会立即返回可用数据。

语法

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

streamsize readsome (char* s, streamsize n);

参数

  • s − 指向存储提取字符的数组的指针。
  • n − 要提取的最大字符数。

返回值

此函数返回存储的字符数。

异常

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

数据竞争

修改s指针指向的数组中的元素和流对象。

示例

让我们来看下面的例子,我们将考虑readsome()函数的基本用法。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("Tp, TutorialsPoint");
    char a[5];
    x.readsome(a, 4);
    a[5] = '\0';
    std::cout << "Result : " << a << std::endl;
    return 0;
}

输出

以上代码的输出如下:

Result : Tp, 

示例

考虑下面的例子,我们将从中读取部分数据std::istringstream。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream a("Hello Namaste");
    char b[6];
    a.readsome(b, sizeof(b) - 1);
    b[a.gcount()] = '\0';
    std::cout << "First read: " << b << std::endl;
    a.readsome(b, sizeof(b) - 1);
    b[a.gcount()] = '\0';
    std::cout << "Second read: " << b << std::endl;
    return 0;
}

输出

以下是上述代码的输出:

First read: Hello
Second read:  Nama
istream.htm
广告