0

如何使用低级系统调用从标准输入和输入文件中获取字节数?像读(2)和写(2)

我使用 lseek 从输入文件中获取字节数,但 lseek 无法使用标准输入。

我想尝试按字节读取文件或标准输入字节并将它们存储到数组中并打印出文件或标准输入中的总字节数。我尝试使用 for 循环来做到这一点。比如标准输入...

while((x = read(0, bf, bsize)) > 0) //reading the standard input
{
    for(int i = 0; i < n; i++)
    {
     //try to implement getting the total amount of bytes that are in STDIN here
    }
 }

这是我试图做的,但我认为我使用 for 循环做错了。

我真的迷失了如何实现获取标准输入和输入文件中的字节数。有人能帮助我吗?

4

1 回答 1

0

您无法从stdin/获取字节数,std::cin因为您无法转到这些流中的特定位置。此外,您不能倒带它们。

std::vector您最好的选择是在读取字节时将它们存储在 a中。

std::vector<char> arr;
int c;
while ( (c = std::cin.get()) != EOF )
{
    arr.push_back(c);
}

size_t size = arr.size();
于 2018-04-13T04:53:33.910 回答