草庐IT

libboost_filesystem-vc

全部标签

c++ - 如何从 std::filesystem::path 中删除引号

如果我使用像absolute()这样的函数,我总是得到一个包含引号的路径。在文件系统函数中有没有办法删除这个引号,使其能够与例如一起使用std::ifstream?fs::pathp2{"./test/hallo.txt"};std::cout返回:"/home/bla/blub/./test/hallo.txt"我需要/home/bla/blub/./test/hallo.txt相反。手动做是没有问题的,但是我想问下文件系统lib里面有没有方法。 最佳答案 std::operator规定如下:Performsstreaminput

c++ - 如何指示 VC++ 编译器不内联常量?

我的C++程序中有以下全局常量:constintK=123456;当我编译程序时,生成的可执行文件在所有使用该值的地方(数十次)都包含文字值123456。但是,如果我删除const限定符,值123456在整个可执行文件中只出现一次(在.data部分).这是我正在寻找的结果。我希望值123456只出现一次,以便只需使用十六进制编辑器编辑.exe文件即可更改它。但是,我不想删除const限定符,因为我希望编译器防止我不小心修改源代码中的常量。是否可以指示编译器以某种方式不内联所述常量的值?我需要这样做的原因是,可执行文件很容易被负责“破解”示例程序以改变其行为的学生修改。对于没有经验的人来

c++ - Boost -gd 库文件

构建boost库(这样我就可以使用文件系统命名空间)后,我在stage/lib文件夹中找到了以下名称中包含文件系统的文件:libboost_filesystem-vc100-mt-1_51(838kb)libboost_filesystem-vc100-gd-mt-1_51(4210kb)注意第二个中的-gd。我还在括号中输入了尺寸。那么,有什么区别呢?我使用哪一个? 最佳答案 -gd用于库的调试版本。使用-gd-mt构建调试配置,使用-mt构建发布配置。 关于c++-Boost-gd库

c++ - 为什么VC++引入非标准关键字: __leave?

根据MSDN:The__leavestatementismoreefficientbecauseitdoesnotcausestackunwinding.以我的理解,就是说:“这样一个普通的代码片段是危险的!”structA{int*p;A():p(newint){}~A(){deletep;}};voidf(){__try{Aa;...//Doingsomthingif(thethinghasgonebad)__leave;...//Continue}__finally{}}在C++项目中完全避免__leave是最佳实践吗? 最佳答案

c++ - VC 2013 与 2015 中的 Lambda 删除器

我正在将一些旧代码从VC2013移至2015。下面的简化代码在VC2013中运行良好,但在2015年失败:errorC2664:'voidmain::::operator()(main::D*&)const':cannotconvertargument1from'main::D*'to'main::D*&'我不是在寻找解决方案,而是在寻找更改内容和更改原因的解释。谢谢。#includeintmain(){classD{};automydel=[](D*&p){deletep;p=0;};std::unique_ptrup(newD);return0;} 最佳

c++ - `std::filesystem::path` 没有标准哈希值吗?

我有一个简单的程序,旨在存储一组C++17std::filesystem::path对象。因为有一个std::filesystem::hash_value那是标准的一部分,为什么我不必提供自己的std::hash就无法编译这段代码??当我使用gcc8.1.1作为g++-std=c++17-NO_HASH=1hashtest.cpp-ohashtest-lstdc++fs编译和链接时包括我的哈希函数,一切都运行完美。但是,如果我将其更改为-NO_HASH=0,我收到一长串错误消息,其中最关键的一条是:usr/include/c++/8/bits/hashtable.h:195:21:er

c++ - VC++ 项目 : MSXML vs any other XML libraries

我们知道基于COM技术的MSXML。我们想将它用于即将开始的VC++项目。与MSXML相比,还有其他XML库做得更好吗? 最佳答案 TinyXML-一个C++开源库 关于c++-VC++项目:MSXMLvsanyotherXMLlibraries,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2403567/

c++ - c++14 std::experimental::filesystem::v1 和 c++17 std::filesystem 之间的区别?

我找到了这个页面,描述了c++14和c++17之间的变化:https://isocpp.org/files/papers/p0636r0.html...它链接到此页面,该页面描述了建议的文件系统更改:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r0.html我浏览了一下。标准的措辞有细微的变化,但我看到的唯一代码变化是namespace变化,删除了“实验”和“v1”部分,因此“std::experimental::filesystem::v1”变成了“std::filesystem”",这是预期的。据我所知,

c++ - 有没有更好的方法将命令行参数传递给我的 VC++ 程序?

我正在用C++编写一个程序,它需要一些命令行参数。我知道在VSC++中传递命令行参数的唯一方法是打开属性并导航到命令行参数字段并输入它们,然后运行它。如果我想在每次运行时都传递不同的参数,那不是完全精简的。另一种选择是在放置可执行文件的目录中打开一个命令提示符,然后从那里的命令行运行它,但是如果我想使用调试器,我必须附加它,这很痛苦也。有更好的方法吗? 最佳答案 如果只是为了快速测试或其他什么,您可以在main方法中创建局部变量而不是传入参数。这样可以更快/更容易地更改它们。 关于c++

c++ - 为什么 VC++ 编译代码而 clang 不编译?

我使用VS2015(Update3)编译以下代码:#include#include#includeintmain(){std::functionfn=std::isspace;}如果我用VC++编译就可以了。但是,如果我在VisualStudio中将编译器更改为VisualStudio2015-ClangwithMicrosoftCodeGen(v140_clang_c2),clang会报告错误:main.cpp(7,26):error:noviableconversionfrom''to'std::function'std::functionfn=std::isspace;更奇怪的是