问题标签 [boost-filesystem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
857 浏览

c++ - C++:Boost:在目录导航逻辑方面需要帮助

所以,我正在尝试更改我的目录以保存文件,然后更改回我之前所在的目录。

本质上:

这是我到目前为止的代码:

目前,每次调用该方法时都会发生这种情况:
文件夹不存在:被创建
文件夹不存在:被创建

它没有发挥cd ../作用。=(

所以我的目录结构如下所示:

文件夹名称
- 文件夹名称
-- 文件夹名称
--- 文件夹名称

0 投票
3 回答
436 浏览

c++ - 有一张带路径的地图如何将其与给定的路径进行比较?

我们有字符串对的提升路径映射,例如 name:location (绝对位置路径 a la usr/myfolder/)。我们得到了一些位置 a la usr/myfolder/mysubfolder/myfile。如何找到最适合给定网址的地图位置?

示例我们有一张类似的地图,如果需要,我们可以使用它:

我们被赋予了价值myfolder/mysubfolder/myfile/blablabla/(路径)。我们想找出它与地图中的哪个项目最相关。搜索结果应service4为相关内容最多的地图项。

那么如何通过给定的字符串值找到与它最相关的地图元素呢?

所以最初的问题是关于一般字符串的情况,但我有一些重新配置,所以不,我只是在提升路径上工作。

0 投票
2 回答
241 浏览

c++ - 为 iostream 获取更好的错误消息

我实现了一个小程序,可以提取(并通过 fuse mount)某种存档格式。我使用boost::filesystem::ifstream,但在出错时(例如,用户想要提取的文件不存在)我收到非常难以描述的错误消息。我想知道有没有办法为 C++ 中的 IO 相关问题获得更好的错误消息?

在相关的说明中,我想知道我是否应该使用 C 语言FILE*,或者在 fuse 文件系统的情况下只使用普通文件描述符?因为strerror(errno)比 iostreams 给我的要好得多。

0 投票
3 回答
2300 浏览

c++ - Boost.Filesystem 崩溃

有没有人有这个问题?使用 recursive_directory_iterator 搜索分区时,到达末尾时会崩溃。
我在 Visual Studio 2008 中使用 boost 1.39 得到这个,但也在家里使用 MinGW 和 boost 1.46。我不认为我做错了什么:

编辑:
我看到它最后没有崩溃,但是当它到达系统卷信息时

0 投票
1 回答
1342 浏览

c++ - directory_iterator - 复制到“倒带”?

所以我写了一个小程序来试试Boost Filesystem。我的程序将写入当前路径中有多少个文件,然后是文件名。这是我的程序:

现有文件是 program.exe、.ilk 和 .pdb
但是我得到以下输出(为简洁起见,省略了整个路径):

$ program.exe
文件总数:3
[..]/program.pdb
断言失败:m_imp->m_handle != 0 && "internal program error", file c:\program files\boost\boost_1_44\boost\filesystem\ v2\operations.hpp,第 1001 行

如果我做一个新的 directory_iterator 代替它工作正常:

I noticed a similar question related to directory_iterators but I have no idea what they are referring to or if it's the same issue.

Question is: Why can't I save a startiterator and then use that to rewind my iterator?

0 投票
2 回答
2928 浏览

c++ - BOOST_FILESYSTEM_VERSION 2 path.native_file_string() 的 BOOST_FILESYSTEM_VERSION 3 模拟是什么?

path.native_file_string()所以我尝试移植我的旧项目(从 boost 1.44到1.61)我发现没有boost::filesystem v3...

那么 in 的模拟是path.native_file_string()什么boost::filesystem v3?(我不想再使用 v2 但我需要像 native_file_string 这样的功能)

0 投票
1 回答
6818 浏览

c++ - 将 Boost.Filesystem 静态链接到共享库的问题

我正在用GCC 4.5.2and Boost 1.46.1(用 编译--build-type=complete)构建一个共享库,这是来自 Makefile 的一个命令,它执行链接部分:

一切都编译得很好,但是当它被应用程序加载时出现以下错误:

ldd输出:

我相信这意味着它静态链接了Boost。

nm crashdetect.so -u | grep boost就是说:

所以我认为既然这个符号在这个列表中排在第一位,那么很可能它没有什么特别之处。

我错过了什么吗?

编辑: 这是不可能的还是什么?

0 投票
3 回答
163 浏览

c++ - 为什么这种理论上的跨平台代码不会改变 Windows 上的环境变量?

所以我尝试下一个代码:

我的代码有什么问题?为什么它没有设置任何环境变量,为什么它没有显示任何错误?(WIN代码就是以此为基础的。

0 投票
2 回答
3122 浏览

c++ - 从 Visual Studio 2008 切换到 Visual Studio 2010,现在无法链接到 boost 文件系统

我刚从 Visual Studio 2008 切换到 Visual Studio 2010,我的一个项目现在出现链接器错误:

链接:致命错误 LNK1104:无法打开文件“libboost_filesystem-vc90-mt-gd-1_46_1.lib”

我确实重建了 boost,我在 lib 文件夹中看到了 vc10 库,但我无法弄清楚它为什么/如何仍然引用 vc90 库?我检查了链接器属性,并且指向了正确的文件夹(即 vc10 库的文件夹)。在输入部分我没有指定库,所以我不知道它是如何获得对 vc90 库的引用的。

有谁知道这个问题的解决方案是什么?

更新

我用来构建 boost 的构建命令是:

bjam --build-dir=c:\boost --build-type=complete --with-filesystem --toolset=msvc address-model=64 阶段

它自动产生以下输出(除其他外):

阶段\lib\boost_filesystem-vc100-mt-1_46_1.lib

命令行

链接器:

/OUT:"bin\x64\Debug\NEST2.dll" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Users\USER\Desktop\sandbox\boost_1_46_1\bin\x64\lib" /LIBPATH:"C:\Users\ USER\Desktop\sandbox\db-5.1.25\build_windows\x64\Release" /DLL "ws2_32.lib" "advapi32.lib" "libdb51.lib" "kernel32.lib" "user32.lib" "gdi32.lib" “winspool.lib” “comdlg32.lib” “shell32.lib” “ole32.lib” “oleaut32.lib” “uuid.lib” “odbc32.lib” “odbccp32.lib” /MANIFEST /ManifestFile:”tmp\x64\ Debug\NEST2.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\dev\app\NEST2\bin\x64\Debug\NEST2. pdb" /ASSEMBLYDEBUG /SUBSYSTEM:WINDOWS /PGD:"C:\dev\app\NEST2\bin\x64\Debug\NEST2.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE

编译器:

/I"C:\Users\USER\Desktop\sandbox\boost_1_46_1" /I"C:\Users\USER\Desktop\sandbox\db-5.1.25\build_windows" /Zi /nologo /W3 /WX- /Od / OT /D“WIN32”/D“_WIN64”/D“_DEBUG”/D“_WINDOWS”/D“_USRDLL”/D“NEST2_EXPORTS”/D“_HAS_ITERATOR_DEBUGGING=0”/D“__SECURE _SCL=0”/D“_WINDLL " /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"tmp\x64\Debug\NEST2.pch" /Fa"tmp\ x64\Debug\" /Fo"tmp\x64\Debug\" /Fd"tmp\x64\Debug\vc100.pdb" /Gd /errorReport:queue

更新 2.0

现在,如果我能弄清楚为什么它引用了错误的库!

0 投票
3 回答
3081 浏览

c++ - 使用带有宽字符串的 boost::iostreams::mapped_file_source

如果我用一个窄字符串实例化 mapped_file_source (boost 1.46.1 ),如下所示,我没有问题:

但是,如果我尝试使用宽字符串:

我在 VC2010 SP1 中收到以下编译器错误:

如果我尝试向构造函数传递 boost::filesystem::path ,则会收到以下错误:

我觉得我遗漏了一些明显的东西,但我只是在兜圈子,试图弄清楚编译器试图告诉我什么,但我只是迷路了。那个手掌到额头的时刻只是没有发生..我做错了什么?

mapped_file.hpp 中定义的构造函数如下所示:

basic_mapped_file_params 类构造函数如下所示:

其中模板类定义为:

标题中有一些额外的帮助,上面写着:

如果我采用这种方法:

我得到了上面提到的相同的C2664错误..

我知道编译器告诉我问题出在哪里,但是查看标头源代码和评论让我相信我想要完成的事情是受支持的,只是我的方法不正确。我是否误解了头文件告诉我的内容?我知道这里的某个地方可能有关于模板实例化和显式/隐式转换的好课。

有趣的是,将我的 boost 安装升级到 1.47.0 似乎清除了C2664错误,但我仍然收到有关访问私有成员的C2248错误。