- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 boost::filesystem
生成新路径,如下所示
#include <iostream>
#include <string>
#include <boost\filesystem.hpp>
namespace bf = boost::filesystem;
bf::path o("C:\\mir");
bf::path p("C:\\mir\\dir\\beer.txt");
bf::path r("C:\\test");
auto pp = std::mismatch(o.begin(), o.end(), p.begin());
r.append(pp.second, p.end()); // this line causes compiler error
编译错误如下
c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2885): warning C4996: 'std::_Mismatch1': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
c:\vc\include\xutility(2868) : see declaration of 'std::_Mismatch1'
g:\copywithpath\copywithpath.cpp(40) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2> std::mismatch<boost::filesystem3::path::iterator,boost::filesystem3::path::iterator>(_InIt1,_InIt1,_InIt2)' being compiled
with
[
_Ty1=boost::filesystem3::path::iterator,
_Ty2=boost::filesystem3::path::iterator,
_InIt1=boost::filesystem3::path::iterator,
_InIt2=boost::filesystem3::path::iterator
]
c:\vc\include\xstring(506): error C2621: member 'std::_String_val<_Elem,_Alloc>::_Bxty::_Buf' of union 'std::_String_val<_Elem,_Alloc>::_Bxty' has copy constructor
with
[
_Elem=boost::filesystem3::path,
_Alloc=std::allocator<boost::filesystem3::path>
]
c:\vc\include\xstring(509) : see reference to class template instantiation 'std::_String_val<_Elem,_Alloc>::_Bxty' being compiled
with
[
_Elem=boost::filesystem3::path,
_Alloc=std::allocator<boost::filesystem3::path>
]
c:\vc\include\xstring(522) : see reference to class template instantiation 'std::_String_val<_Elem,_Alloc>' being compiled
with
[
_Elem=boost::filesystem3::path,
_Alloc=std::allocator<boost::filesystem3::path>
]
f:\boost\filesystem\v3\path.hpp(621) : see reference to class template instantiation 'std::basic_string<_Elem>' being compiled
with
[
_Elem=boost::filesystem3::path
]
f:\boost\filesystem\v3\path.hpp(232) : see reference to function template instantiation 'boost::filesystem3::path &boost::filesystem3::path::append<InputIterator>(InputIterator,InputIterator,const boost::filesystem3::path::codecvt_type &)' being compiled
with
[
InputIterator=boost::filesystem3::path::iterator
]
g:\copywithpath\copywithpath.cpp(42) : see reference to function template instantiation 'boost::filesystem3::path &boost::filesystem3::path::append<_Ty2>(InputIterator,InputIterator)' being compiled
with
[
_Ty2=boost::filesystem3::path::iterator,
InputIterator=boost::filesystem3::path::iterator
]
f:\boost\filesystem\v3\path.hpp(622): error C2665: 'boost::filesystem3::path_traits::convert' : none of the 8 overloads could convert all the argument types
f:\boost\filesystem\v3\path_traits.hpp(96): could be 'void boost::filesystem3::path_traits::convert(const char *,const char *,std::wstring &,const boost::filesystem3::path_traits::codecvt_type &)'
f:\boost\filesystem\v3\path_traits.hpp(102): or 'void boost::filesystem3::path_traits::convert(const wchar_t *,const wchar_t *,std::string &,const boost::filesystem3::path_traits::codecvt_type &)'
f:\boost\filesystem\v3\path_traits.hpp(130): or 'void boost::filesystem3::path_traits::convert(const char *,const char *,std::string &,const boost::filesystem3::path_traits::codecvt_type &)'
f:\boost\filesystem\v3\path_traits.hpp(150): or 'void boost::filesystem3::path_traits::convert(const wchar_t *,const wchar_t *,std::wstring &,const boost::filesystem3::path_traits::codecvt_type &)'
while trying to match the argument list '(const boost::filesystem3::path *, const boost::filesystem3::path *, boost::filesystem3::path::string_type, const boost::filesystem3::path::codecvt_type)'
我的代码有什么问题以及如何修复它。提前致谢。
最佳答案
path::append 需要一系列字符,而您提供了一系列路径。您应该单独附加每个元素:
auto pp = std::mismatch(o.begin(), o.end(), p.begin());
for(auto iter = pp.second; iter != p.end(); ++iter)
r /= *iter;
不幸的是,boost::filesystem 路径不提供路径算法的接口(interface)。
关于c++ - boost::filesystem::path::append(通过迭代器)导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779052/
有没有办法确定我是否可以使用标准 (在所有支持 C++17 的现代 C++ 编译器上可用)或 由较旧的编译器使用。 (例如 g++ 6.3,这是 Debian Stretch 上的当前标准版本) 知
因此,boost::filesystem 允许您在文件所有者拥有的权限、组拥有的权限以及所有用户拥有的权限的意义上访问文件的权限。这很好,但我不想开始检查我是谁,我的组是什么等等——我只想检查我是否可
我不小心使用 rm -rf 删除了错误的文件夹,我尝试过的每个工具都告诉我我没有硬盘或找不到文件系统。 当我输入 df 时,我得到: 已使用的文件系统大小 Avail Use% Mounted on
我是 Java 的新手,正在尝试学习 IO 的概念。我遇到过两个非常相似的 Java 类,FileSystem 和 FileSystems。它们之间有什么区别?什么时候使用一个而不是另一个? 最佳答案
我查了很多关于c++17下文件系统链接的问题,还是无法链接成功。我的main.cpp文件如下。 #include int main(int argc, char** argv) { std:
Boost 库有一个类来处理文件路径:boost::filesystem::path。Boos 也有这个类 boost::filesystem::wpath 每个类都有方法string(), wstr
我正在编写一个利用 std::filesystem 的库(仅供学习)。它在 MSVC 上运行良好,但是默认情况下,Linux 的 LTS 版本就像 Ubuntu 一样附带 GCC 6.x,官方存储库中
请查找随附的代码片段。我正在使用此代码将文件从 hdfs 下载到我的本地文件系统 - Configuration conf = new Configuration(); FileSys
这段代码中std::filesystem::copy()和std::filesystem::copy_file()有什么区别? #include void testing() { const
以下代码旨在去除路径的第一部分,以防它存在: #include std::filesystem::path strip_prefix(std::filesystem::path p) {
在以下两种情况下,是否有理由调用lexically_normal: std::filesystem::path filepath = someFuntionThatGetsAPath(); filep
函数 boost::filesystem::canonical() ( doc of 1.66 , doc of current release ) 提供两个参数(忽略错误代码重载)base。第一个是
boost::filesystem::path使用 &转义路径字符串中的引号,see demo : std::cout 标题。 最佳答案 Boost::Filesystem 相当古老,早于 C++14
考虑以下关于路径分解的断言,其中每个局部变量,例如stem 具有明显的初始化,例如auto stem = path.stem() — assert(root_path == root_name / r
给定以下代码: fs::path p{ "a/b/" }; fs::path q{ "a/b/." }; assert(p == q); [注意定义 q 的字符串末尾的额
由于 C++17 std::filesystem 与 boost::filesystem 非常相似,所以我尝试做与这个问题相同的事情: Escaping some Directories in ite
我找到了这个页面,描述了 c++14 和 c++17 之间的变化: https://isocpp.org/files/papers/p0636r0.html ... 它链接到此页面,该页面描述了建议的
我有一些代码,当我编译它时,出现以下错误,我不知道如何解决。我尝试添加 -L/usr/lib/x86_64-linux-gnu、-lboost_system 和 -lboost_filesystem,
尝试使用 Asset.loadAsync 将 .txt Assets 作为字符串加载到 Expo 中 Asset.loadAsync(module) 解析并提供一个 localUri 但是,FileS
我在 中编码C++ 在 Visual Studio (Windows 10)并收到此错误: #error The header providing std::experimental::filesy
我是一名优秀的程序员,十分优秀!