问题标签 [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 投票
1 回答
5534 浏览

c++ - boost::filesystem::path 用于 unicode 文件路径?

有没有办法将 boost::filesystem::path 与 unicode 文件路径一起使用?特别是我想将它与 std::wstring 一起使用,而不是 std::string。

我在 Windows 平台上工作,有时我需要处理一个包含 unicode 字符的文件路径。

0 投票
4 回答
48006 浏览

c++ - 如何通过覆盖执行 boost::filesystem copy_file

Windows API 函数CopyFile有一个参数BOOL bFailIfExists,允许您控制是否要覆盖目标文件(如果存在)。

boost::filesystem copy_file函数没有这样的参数,如果目标文件存在则将失败。有没有一种优雅的方式来使用 boost copy_file 函数并覆盖目标文件?还是简单地使用 Windows API 更好?我目前的目标平台是 Windows,但我更喜欢使用 STL 并尽可能使用 boost 来保持我的代码平台独立。

谢谢你。

0 投票
3 回答
9155 浏览

c++ - boost::filesystem::exists 真的应该为没有媒体的可移动媒体设备抛出异常吗?

我在使用 boost::filesystem::exists 时遇到了一些奇怪的情况。如果您尝试检查未准备好或没有媒体的驱动器上是否存在文件,则会引发 basic_filesystem_error。就我所关心的 bfs::exists 的大多数用途而言,如果驱动器尚未准备好,则意味着该文件不存在。

我可以用 try-catch 包装我的调用以正确处理这种情况,但是它变得有点麻烦并且使代码有点笨拙。更糟糕的是,这意味着我正在使用 basic_filesystem_error 的特殊情况进行流量控制,这意味着如果出现该异常的其他原因,我将无法再正确处理它。

出现这种情况的一般情况是,如果我尝试检查 CD 或 DVD 驱动器上是否存在文件。我的代码曾经是:

变成:

我并不太喜欢在我现有的代码库中到处进行这种更改。

我正在考虑在某个地方创建一个单独的函数来包装 try-catch 并用它替换我的 bfs::exist 调用,但我仍然不满意以这种方式使用 try-catch 是个好主意。似乎我正在为错过更重要和相关的特殊情况敞开大门。

我知道您可以为该函数的非抛出版本重新编译 boost,但我认为这并不能真正避免我的异常处理问题。

以前有没有人遇到过可移动媒体驱动器的这个问题,如果有,你是如何克服的?

0 投票
1 回答
2290 浏览

c++ - 有没有更简单的方法从 boost::filesystem::path 弹出目录?

我有一个相对路径(例如“foo/bar/baz/quux.xml”),我想弹出一个目录,这样我就有子目录+文件(例如“bar/baz/quux.xml”)。

您可以使用路径迭代器来做到这一点,但我希望文档中缺少一些东西或更优雅的东西。下面是我使用的代码。

输出是:

我希望是这样的:

如果您查看 codepad.org 上的一些测试代码,我已经尝试过 branch_path(返回“foo/bar/baz”)和 relative_path(返回“foo/bar/baz/quux.xml”)。

0 投票
1 回答
709 浏览

compiler-construction - Boost Filesystem Library Visual C++ 编译错误

我在尝试使用 Boost Filesystem Library 编译/运行一些示例程序时遇到以下问题。我正在使用 MS-Visual C++ 和 Visual Studio .NET (2003)。

我已经使用 BoostPro 安装程序安装了 Boost 库,版本 1.38 和 1.39(以防万一出现版本问题)。

如果我只是尝试包含/boost/filesystem/operations.hpp,则会收到以下错误:

任何帮助是极大的赞赏。谢谢!

0 投票
2 回答
1566 浏览

c++ - 在雪豹上安装 Boost 库

我已按照 boost 网站上的说明进行操作。我已将 boost 目录放在路径中。我仍然无法使用 boost 库编译 C++ 程序。我特别想使用文件系统库。任何帮助是极大的赞赏。

--TJB

0 投票
3 回答
1421 浏览

c++ - 用于操作 Windows 路径的跨平台库?

我正在编写一个需要检查和操作 Windows 路径的跨平台应用程序。

具体来说,对于我现在遇到的特定问题,我需要知道路径是绝对的还是相对的。

当前代码使用boost::filesystem::path的当然是在 Windows 上的魅力:

这种方法的问题是boost::filesystem::path只有两种模式:原生和便携。这意味着我在Linux下编译时Windows路径语法不可用(它#ifdef在源代码中被淘汰)。因此,路径“C:\path”在 Windows 中被认为是绝对的,但在 Linux 中是相对的。


你们能推荐一个可以检查和操作 Windows 路径的跨平台 C++ 库吗?


目前,我要做的唯一 Windows 路径操作是检查路径是否为绝对路径。

我将用于绝对路径的标准是它都包含驱动器号,并且路径以\. 此标准下的绝对路径的一个示例是C:\path。这些都是此标准下的相对路径的示例:C:path, \path.

0 投票
1 回答
2658 浏览

visual-c++ - 如何使用 boost 和 Visual Studio 2005 复制文件和文件夹?

我正在尝试使用 boost::filesystem 来复制文件和文件夹(就像标准复制文件夹并将其粘贴到 Windows 资源管理器中一样)。

虽然我去过boost::filesystem 文档,但我仍然不知道如何去做。

您是否必须递归地遍历每个目录(创建它)并找到复制它的每个文件?

此外,如何在 C++/Boost 中复制文件?

PS我正在使用Boost 1.40.0

更新 我想我最终可能已经为这个问题创建了一个答案,唯一关心的是我没有做任何尝试捕获错误来检查锁定的文件和文件夹。

以下代码在相对路径“../example/ecomm”中复制目录并将其复制到不存在的路径“../example/dup_ecomm”:

我现在的问题是关于锁定的文件和目录我忘记做什么了?

0 投票
8 回答
25521 浏览

c++ - 展开路径中包含环境变量的文件名

什么是最好的扩展方式

或者

没有遍历路径字符串直接寻找环境变量?我看到 wxWidgets 有一个wxExpandEnvVars函数。在这种情况下我不能使用 wxWidgets,所以我希望找到一个 boost::filesystem 等效或类似的。我只是以主目录为例,我正在寻找通用路径扩展。

0 投票
2 回答
1999 浏览

c++ - Boost 文件系统编译错误

我正在编写一些利用 boost 文件系统库的代码。这是我的代码的摘录:

类型:

我得到一个编译错误:

此代码是输出批处理脚本的程序的一部分,该脚本使用 lame.exe 将文件转换为 mp3。为其设计的音乐库具有以下格式:

根/艺术家/歌曲

或者

根/艺术家/专辑/歌曲

this->m_input_path 是根路径。

我不确定我是否正确地解决了这个问题。如果我是,我该如何解决我得到的错误?

编辑:

我的代码现在是:

我现在得到的错误是: