草庐IT

base_func

全部标签

c++ - Unicode版本的base64编码/解码

我正在使用来自http://www.adp-gmbh.ch/cpp/common/base64.html的base64编码/解码它与下面的代码一起工作得很好。conststd::strings="IAmABigFatCat";std::stringencoded=base64_encode(reinterpret_cast(s.c_str()),s.length());std::stringdecoded=base64_decode(encoded);std::cout但是,说到unicodenamespacestd{#ifdef_UNICODEtypedefwstringtstrin

c++ - 继承:将 derived& 作为 arg 传递给期望 base& 的函数

考虑这个示例代码:#includeclassbase{public:base(){std::cout为什么调用base::base(constbase&)没问题,但是调用derived::derived(constbase&)不是?两者都需要一个基本引用,并且都被赋予一个派生引用。我的理解是派生"is"基础。为什么编译器坚持使用derived::derived(constderived&)而它在提供时使用base::base(constbase&)没有问题引用派生类型的对象? 最佳答案 显然,“删除”其中一项默认内容并没有实际完全删

c++ - 警告 : resolving Func by linking to Func@##

我正在构建一个包含以下内容的DLL:extern"C"__declspec(dllexport)void__stdcallDrawMouse(intX,intY,intR,intG,intB){Buffer.SetMouse(X,Y,R,G,B);}然后在.def文件中我添加了:LIBRARYTest;DESCRIPTION"TestDefinitionFile"EXPORTSDrawMouse;然后当我编译时,我添加链接器选项:-static-static-libstdc++-static-libgcc-Wl,--kill-at-d--input-defsrc\Test.def-m3

c++ - 在什么平台上 func(shared_ptr(...), shared_ptr(...)) 真的很危险?

我记得ScottMeyers教我的func(shared_ptr(newP),shared_ptr(newQ));是危险的,因为(如果我没记错的话)内存分配、引用计数(构造)和分配给顺序>函数参数允许leak(理论上?)在极少数情况下出现。为了防止这种情况应该将shared_ptr封装在函数调用中,例如在make_shared()中。func(make_shared(),make_shared());这是一些discussion关于它。我想知道是否有(当前)编译器在该领域,在某些系统上确实可能在某些错误情况下留下一些漏洞?还是那些时代已经过去了,或者它们只是理论上的?最有趣的是知道其中

c++ - 为什么 std::ios_base::sync_with_stdio 没有在 libc++ (clang) 中实现?

让我们看一下这个代码示例:#includeintmain(){std::ios_base::sync_with_stdio(false);intn;std::cin>>n;for(inti=0;i>buf;}}此代码示例对这样的输入的性能:1000000001...9999999在我的机器上:g++-5-O2-std=c++11:./a.outclang-700.0.72-O2-std=c++11:./a.out经过一些分析后,我发现libc++根本没有禁用同步。然后我查看了他们的代码,发现了这个:https://github.com/llvm-mirror/libcxx/blob/6

c++ - 将 std::map<int, std::shared_ptr<Base>> 转换为 std::map<int, std::shared_ptr<Derived>> 的最有效安全方法

我们目前存储了几个不同的数据模型集合,如下所示:std::map>>models;字符串映射到一个已知的类型列表,这都是通过序列化处理的。嵌套映射包含“对象ID”和关联(反序列化)std::shared_ptr的集合DataObject是一个基类,我们从中派生出多种类型。我们有一个方法来获取给定类型的所有数据对象:staticstd::map>*getAll(std::stringtype);这只是在给定的“类型”键处返回指向map的指针。今天我遇到了一个代码审查来添加我认为调用UB但似乎起作用的以下内容。这让我有点紧张并寻找有效的解决方案:templatestaticstd::map

c++ - 是否可以在 gcc 3.3+ 中以旧方式使用 __func__? (C++)

对于3.3之前的gcc版本和MS编译器,我使用以下宏:DEBUG_WARNING(...)printf(">WARNING:"__FUNCTION__"()"__VA_ARGS__);使用:DEBUG_WARNING("someFunctionreturned%d",ret);输出:>WARNING:Class::FunctionName()someFunctionreturned-1当我们有很多系统时,它非常方便,所有系统都发送输出。它是一个单行宏,允许我们相应地过滤输出。小代码,大用途,快乐我。由于__FUNCTION__(和C++中的__func__)定义发生了变化(我相信是为了

c++ - 智能指针 : cast between base and derived classes

假设你有这样一个函数:SmartPtrdoSomething(SmartPtra);像这样的类:classA{}classB:publicA{}现在我这样做:SmartPtrfoo=newB();doSomething(foo);现在,我想取回一个SmartPtr来自doSomething的对象.SmartPtrb=doSomething(foo);这可能吗?我需要做什么样的选角?现在,我刚发现一些我认为丑陋的东西:B*b=(B*)doSomething().get()重要说明:我无权访问SmartPtr和doSomething()代码。 最佳答案

c++ - 将 vector<shared_ptr<Derived>> 传递给需要 vector<shared_ptr<Base>> 的函数

我使用的代码结构有问题,如下(简化):classSPoint{public:SPoint(doublex,doubley,doublez):_x(x),_y(y),_z(z){}protected:double_x,_y,_z;}classPoint3D:publicSPoint{public:Point3D(doublex,doubley,doublez):SPoint(x,y,z){//defaultvaluesforUandV}protected:doubleU,V;}这些点用于创建折线:classSPolyline{public:SPolyline(constvector>&p

c++ - 我什么时候需要使用 std::async(std::launch::async, func()) 而不是 func()?

我不明白使用std::async的原因与std::lauch::async标志,而不是简单地调用传递给std::async的函数.是否有任何特价保证? 最佳答案 根据thedocumentation,是一个只接受函数及其参数的重载。您正在使用接受更具体的策略的重载。async(f,args...)等同于async(std::launch::async|std::launch::deferred,f,args...),其中两个标志的存在将函数是否简单地与当前调用堆栈分离(推迟到第一个非定时等待函数的执行;这称为惰性求值),或者实际上是