草庐IT

string-comparison-functions

全部标签

c++ - parallel_for (Inter TBB) 是否存在类似于我们在 std::function 上看到的开销?

在此链接中std::functionvstemplate关于std::function的开销有一个很好的讨论。基本上,要避免传递给std::function构造函数的仿函数的堆分配造成10倍的开销,您必须使用std::ref或std::cref。取自@CassioNeri答案的示例显示了如何通过引用将lambda传递给std::function。floatfoo(std::functionf){return-1.0f*f(3.3f)+666.0f;}foo(std::cref([a,b,c](floatarg){returnarg*0.5f;}));现在,IntelThreadBuil

C++ lambda : Access static method in lambda leads to error 'this was not captured for this lambda function'

考虑以下代码://thisiswhatIwanttocall;Icannotmodifyitssignaturevoidsome_library_method(void(*fp)(void));classSingleton{public:staticSingleton*instance();voidfoo();voidbar();private:Singleton();};voidSingleton::foo(){//thisleadstoanerror('this'wasnotcapturedforthislambdafunction)void(*func_pointer)(void

c++ - cplusplus.com 说 std::string "shall not be dereferenced"的结尾

如果你能为我澄清一些困惑,我会很高兴。我正在编写一个函数来删除字符串中的重复字符,例如"AB-->"AAABB"。voidremove_dups(std::string&str){std::string::iteratorit=str.begin();while(it!=str.end()){if(*(it+1)==*it){str.erase(it+1);}else{++it;}}}我测试的时候好像能用。但是,我想知道,不应该有栅栏柱问题吗?当“it”是字符串的末尾时,if语句查看不存在的下一个字符。根据cplusplus.com,尾后字符是一个理论字符,将跟在字符串中的最后一个字符

c# - 翻译 C+ +'s sprintf format string to C#' s string.Format

我找到了下面的C++代码(注释是我自己加的)://frame_nameisachararray//prefixisstd::string//kisaforloopcounter//framesisastd::vectorstringsprintf(frameName,"%s_%0*s.bmp",prefix.c_str(),k,frames[k].c_str());然后我尝试将它翻译成C#//prefixisstring//kisaforloopcounter//framesisListstringframeName=string.Format("{0}_(whatgoesinhere

c++ - Clang:将 bind 或 mem_fn 与 string::c_str 和 transform 结合使用时出现问题

尝试将std::stringvector转换为constchar*vector:#include#include#include#includeintmain(intargc,char**argv){std::vectorvalues;values.push_back("test1");values.push_back("test2");values.push_back("test3");std::vectorc_values(values.size());std::transform(values.begin(),values.end(),c_values.begin(),std::

c++ - 返回 std::function 的函数的返回类型

这个问题在这里已经有了答案:Recursivetypedeffunctiondefinition:std::functionreturningitsowntype(3个答案)关闭7年前。我有一个函数应该返回一个与该函数类型相同的std::function。基本上我想要这样的东西:usingRetType=std::function;这显然不会编译。如何正确声明返回类型?

c++ - "std::string + char"表达式是否创建另一个 std::string?

下面的表达式是否创建了另一个std::string然后将其添加到s1?std::strings1="abc",s2="xyz";s1+=s2+'b';它是否应该防止这种情况(它们无需额外工作就可以添加到s1)?std::strings1="abc",s2="xyz";s1+=s2;s1+='b';这些规则是否也适用于“std::string+std::string”表达式? 最佳答案 所有涉及std::string的重载+运算符都会返回一个新的std::string对象。这是您在youfinallydecipherthereleva

C++ Function Hook(仅内存地址)

我有一个内存地址,它是另一个程序(它的一个dll)中函数的内存地址。我已经通过DLL注入(inject)加载到程序中。我已经有了bass地址,以及每次程序加载时函数的实际位置。所以,这不是问题。我只想Hook那个位置,然后获取变量。我知道函数的伪代码。所以这不是问题。或者另一种很棒的方法是在该内存位置做一个断点并获取调试寄存器。我找不到任何明确的例子。我也没有函数的“名称”,我只有内存地址。有什么方法可以只使用内存地址吗?大多数(如果不是所有的话)示例都让您使用函数的名称,而我没有。如果有人能为我指明正确的方向以便我完成这项任务,我将不胜感激。它也可能会帮助很多其他可能有相同问题的人。

c++ - 带有 std::string 的文字类仅适用于模板特化?

我的编译器不允许以下定义,因为std::string有一个非平凡的析构函数(这说明teststr不能有平凡的析构函数成员(member)没有):classteststr{private:std::string_m;public:constexprteststr(std::stringvalue):_m(value){};constexprstd::stringm()const{return_m;}voidm(std::stringvalue){_m=value;}};但是,teststr的以下等价定义(据我所知)是允许的:templateclasstest{private:T_m;pu

c++ - 检查类型是否可以作为 boost::lexical_cast<string> 的参数

我有以下特征类(IsLexCastable)来检查是否可以通过调用boost::lexical_cast将类型转换为字符串.它错误地返回true对于vector.#include#include#include#include#include#includeusingnamespacestd;usingnamespaceboost;namespacestd{///AddingtostdsincethesearegoingtobepartofitinC++14.templateusingenable_if_t=typenamestd::enable_if::type;}templates