小编cpp*_*arr的帖子

boost::filesystem 递归获取每个文件的大小

当参数是目录时,为什么此代码会引发错误?

使用boost::recursive_directory_iterator和使用std::cout语句,我可以看到它从不打印目录;只有文件。但是,当我尝试调用 时boost::filesystem::file_size(),会抛出一个错误,基本上是说我正在尝试获取目录的文件大小。

错误(参数为"/home"):

terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
  what():  boost::filesystem::file_size: Operation not permitted: "/home/lost+found"
Aborted
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main(int argc, char* argv[])
{
    if (argc != 2) return -1;

    const fs::path file{argv[1]};

    if (!fs::exists(file)) return -1;

    if (fs::is_regular_file(file))
        std::cout << file << "   [ " << fs::file_size(file) << " ]\n";

    else if (fs::is_directory(file))
        for (const fs::directory_entry& f : fs::recursive_directory_iterator{file})
            std::cout << f.path().filename() …
Run Code Online (Sandbox Code Playgroud)

c++ filesystems boost file boost-filesystem

5
推荐指数
1
解决办法
6400
查看次数

使用"()"调用构造函数与"{}"不同

为什么用这两行代码打印出不同的结果?

std::cout << std::string{6, 's'}
std::cout << std::string(6, 's')
Run Code Online (Sandbox Code Playgroud)

c++ string constructor std c++14

2
推荐指数
1
解决办法
194
查看次数

标签 统计

c++ ×2

boost ×1

boost-filesystem ×1

c++14 ×1

constructor ×1

file ×1

filesystems ×1

std ×1

string ×1