directory_entry
entry
(
str
)
;
if
(
entry
.
status
(
)
.
type
(
)
==
file_type
::
directory
)
cout
<<
"该路径是一个目录"
<<
endl
;
directory_iterator
list
(
str
)
;
for
(
auto
const
&
it
:
list
)
cout
<<
it
.
path
(
)
.
filename
(
)
<<
endl
;
return
0
;
编译时提示:
[dhn@dc ~]$ g++ -lstdc++fs -std=c++17 test.cpp
/tmp/cc7EWd32.o:在函数‘main’中:
test.cpp:(.text+0x181):对‘std::filesystem::__cxx11::directory_iterator::operator*() const’未定义的引用
test.cpp:(.text+0x1dc):对‘std::filesystem::__cxx11::directory_iterator::operator++()’未定义的引用
/tmp/cc7EWd32.o:在函数‘std::filesystem::__cxx11::directory_entry::status() const’中:
test.cpp:(.text._ZNKSt10filesystem7__cxx1115directory_entry6statusEv[_ZNKSt10filesystem7__cxx1115directory_entry6statusEv]+0x14):对‘std::filesystem::status(std::filesystem::__cxx11::path const&)’未定义的引用
/tmp/cc7EWd32.o:在函数‘std::filesystem::__cxx11::directory_entry::symlink_status() const’中:
test.cpp:(.text._ZNKSt10filesystem7__cxx1115directory_entry14symlink_statusEv[_ZNKSt10filesystem7__cxx1115directory_entry14symlink_statusEv]+0x14):对‘std::filesystem::symlink_status(std::filesystem::__cxx11::path const&)’未定义的引用
/tmp/cc7EWd32.o:在函数‘std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)’中:
test.cpp:(.text._ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE[_ZNSt10filesystem7__cxx1118directory_iteratorC5ERKNS0_4pathE]+0x26):对‘std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)’未定义的引用
/tmp/cc7EWd32.o:在函数‘std::filesystem::exists(std::filesystem::__cxx11::path const&)’中:
test.cpp:(.text._ZNSt10filesystem6existsERKNS_7__cxx114pathE[_ZNSt10filesystem6existsERKNS_7__cxx114pathE]+0x14):对‘std::filesystem::status(std::filesystem::__cxx11::path const&)’未定义的引用
/tmp/cc7EWd32.o:在函数‘std::filesystem::__cxx11::path::path<char [6], std::filesystem::__cxx11::path>(char const (&) [6], std::filesystem::__cxx11::path::format)’中:
test.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IA6_cS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IA6_cS1_EERKT_NS1_6formatE]+0x5e):对‘std::filesystem::__cxx11::path::_M_split_cmpts()’未定义的引用
collect2: 错误:ld 返回 1
百度了好久都没看到解决方案,看错误是缺少了库的支持,但又不知道是哪个库。后来找到一篇文章:
https://www.it1352.com/1984741.html ,文章里介绍了应该增加链接库:-lstdc++fs,而且这个库要放到源文件后面,如 g++ -std=c++17 test.cpp -lstdc++fs 。
linux升级后
编译
代码出现问题:
undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits, std::allocator >::basic_ostringstream()@GLIBCXX_3.4.26’
后来查看发现,
编译
的库采用的是gcc 9.3而docker里面链接后
编译
的的是gcc7.5问题找到就很简单
把库放到docker中用7.5
编译
后,链接就成功了
解决
方式:在CMakeList.txt中增加CMAKE_CXX_FLAGS选项 -std=c++17 -lstdc++fs
以及在target_link_libraries时增加stdc++fs。
set(CMAKE_CXX_FLAGS "-g -std=c++17 -lstdc++fs")
target_link_libraries(${project_name} stdc++fs)
C++中,Boost库提供了boost::filesystem::
directory_iterator
类,用于遍历目录中的所有文件和子目录。它可以用于获取目录中的文件和子目录的名称、大小、修改时间等信息,也可以用于遍历目录中的所有文件。
一、skui简介
使用Skia作为低级绘图工具包的UI框架。它使用C ++标准库的最新功能(当前针对C ++ 17)。目前这个仓库处于开发阶段,功能还不稳定。该仓库的源代码在github上(https://github.com/skui-org/skui),作者是Ruben Van Boxem,遵循MIT开源协议。
这里不得不先介绍一下skia。Skia是一个开源2D图形库,它提供可在各种硬件和软...
同时使用.h和using所以
错误
using namespace std;是指你所包含的那些变量和函数在std的名字空间当中,但是在.h当中,这些变量和函数在全局的空间当中,所以出错.
#include
#include
//using namespace std;
#include
#include
using namespace std;
C++11中定义了一种for循环用法,可用于容器的遍历,如下图。 对于一个容器,我们这样写(decl : coll),coll为一个容器,
编译
器就会把容器中的每个元素依次放入到decl这个变量中,从而完成遍历,且配合auto关键字可自动参数类型推导,很是方便。 但这里关键要注意值和引用含义的区别,当下面elem为值含义时,每次执行都要进行一次赋值的操作,即把vec的一个元素赋值...
随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多台机器上的文件,于是就产生了分布式文件管理系统,英文名成为DFS(Distributed
FileSystem)。那么,什么是分布式文件系统?简而言之,就是一种允许文件通过网络在多台主机上分享的文件系统,可以让多个机器上的多个用户分享文件和存储空间。它最大的特点是“通透性”,DFS让实际上是通过网络来访问文件的动作,由用户和程序看来,就像是访问本地的磁盘一般(In
到底是业务推动了技术的发展,还是技术推动了业务的发展,这个话题放在什么时候都会惹来一些争议。随着互联网以及物联网的蓬勃发展,我们进入了大数据时代。IDC预测,到2020年,全球会有44ZB的数据量。传统存储和技术架构无法满足需求。在2013年出版的《大数据时代》一书中,定义了大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。当我们把时间往回看10年,来到了2003年,这一年Google发表《Google
FileSystem》,其中提
c++17之后c++就已经支持文件系统操作了,用来解析目录方便很多。这里是自己写的一个例子,如果是gcc8,
编译
时需加-lstdc++fs。gcc9应该不用加了。但是都要开启 -std=c++17。
此错产生原因为:c++11与旧的c++库函数实现存在差异,当本地的c++代码动态库为旧版本c++库所实现,而
编译
器g++5,gcc5将其解释为std::__cxx11,就会出现未定义
错误
,那么需要指定
编译
器的版本为g++4,gcc4,再进行
编译
时就不会发生上述问题,
相关命令:
1、
编译
器版本查看
gcc -v,g++ -v
2、安装相应版本
编译
器
sudo apt-...