如何使用低级系统调用从stdin和输入文件获取字节数

时间:2018-04-13 04:17:09

标签: c++ byte system-calls file-descriptor low-level-io

如何使用低级系统调用从stdin和输入文件中获取字节数?喜欢阅读(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循环做错了。

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

1 个答案:

答案 0 :(得分:0)

您无法从stdin / std::cin获取字节数,因为您无法访问这些流中的特定位置。此外,你无法回放它们。

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

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

size_t size = arr.size();