草庐IT

std=c++11

全部标签

c++ - "Why switch statement cannot be applied on strings?"的答案是否仍然正确,即使使用 C++11/14?

我遇到了这个问题:Whyswitchstatementcannotbeappliedonstrings?并想知道答案是否:Thereasonwhyhastodowiththetypesystem.C/C++doesn'treallysupportstringsasatype.Itdoessupporttheideaofaconstantchararraybutitdoesn'treallyfullyunderstandthenotionofastring.仍然适用,即使在C++11/14中使用std:string。是否有多个elseif(...)的替代方案?

c++11: 委托(delegate)构造函数 - 无法选择构造函数模板?

这是后续问题:c++11dedicated"proxyconstructors"delegatingtoprivateuniveralreferenceconstructor?我想去掉那里使用的“enumclassDummy”。但我没有设法委托(delegate)给模板构造函数。请参见下面的代码示例。#include#include#includeclassMyClass{private:templateMyClass(T&&data):_data(std::forward(data)){std::cout(data){std::cout(std::move(data)){std::c

c++ - GDB:我们如何从 std::tuple 中提取值

我们如何提取/打印std::tuple中的单个值?这是名为test.cc的文件中的示例程序。#include#includeusingnamespacestd;intmain(){autot=make_tuple(111,222);cout(t)(t)编译它g++--std=c++11-gtest.cc在gdb中运行gdb--args./a.out...(gdb)startTemporarybreakpoint1at0x400836:filetest.cc,line7.Startingprogram:/home/fmlheureux/a.outTemporarybreakpoint1,

c++ - 我可以 std::find stringstream 中的字符串吗?

我有一个字符串流,我想对其进行迭代并确定其中是否存在子字符串。我知道我可以转换为字符串并执行std::string::find(),但我只是希望尽可能避免从字符串流到字符串的转换。我知道以下内容不起作用,因为istream_iterator使用char作为其类型(而非字符串)stringstreamssBody;stringsFindThis;...autoitr=std::find(istreambuf_iterator(ssBody),istreambuf_iterator(),sFindThis);但我能否以某种方式在不转换为字符串的情况下使用std::find或类似的方法在st

C++11:函数模板:通过引用传递参数

有一种模板函数通过引用传递参数+回调函数,但是如果参数通过引用传递给回调函数则编译器会抛出错误:nomatchingfunctionforcalltofunc(int&,void(&)(int&)).怎么了?templateusingfunc_t=void(T);templatevoidfunc(T&arg,func_tcallback){callback(arg);}voidfunc1(intarg){}voidfunc2(int&arg){}// 最佳答案 扣除T在第二次调用中失败,因为T出现在两个推断的上下文中,这两个上下文推

c++ - 命名空间 'begin' 中没有名为 'std' 的成员

我在Windows上成功编译了一个应该是跨平台的代码。现在,当使用MacOSX在Xcode中编译它时,我得到:std::valarrayv(32);...std::sort(begin(v),end(v));#Useofundeclaredidentifier'begin'std::sort(std::begin(v),std::end(v));#Nomembernamed'begin'innamespace'std'std::sort(std::valarray::begin(v),std::valarray::end(v));#Idem,erroraswell为什么会发生错误Nom

c++ - 在调用之前检查 std::function 的有效性?

我正在尝试编写一个简单但灵活的事件系统(主要是作为练习,我知道现有的库具有非常好的事件处理程序),但我遇到了一个小绊脚石。如何检查作为委托(delegate)的std::function(可能通过lambda,可能通过std::bind)是否为有效函数/成员函数的对象是否仍然存在在打电话之前?我试过简单地使用std::function的bool运算符,但没有取得任何成功。理想情况下,我希望A.在委托(delegate)函数内部以外的地方进行检查,并且B.当被检查的std::function不是委托(delegate)时,代码仍然有效。有什么想法吗?编辑:这是我运行的测试的源代码#inc

c++ - 初始化 std::pair<double, std::array<std::pair<double, double>, 3>>

谁能建议以下代码中std::vector::push_back调用中std::make_pair调用的正确语法:#include#include#includeintmain(){typedefstd::pairPairType;std::vector>>myVector;doubleKey=0.0;PairTypePair1=std::make_pair(1.0,2.0);PairTypePair2=std::make_pair(3.0,4.0);PairTypePair3=std::make_pair(5.0,6.0);myVector.push_back(std::make_pa

c++ - std::call_once 是免费的吗?

我想知道std::call_once锁是否空闲。There是使用互斥锁的call_once实现。但是我们为什么要使用互斥体呢?我尝试使用atomic_bool和CAS操作编写简单的实现。代码线程安全吗?#include#include#include#includeusingnamespacestd;usingmy_once_flag=atomic;voidmy_call_once(my_once_flag&flag,std::functionfoo){boolexpected=false;boolres=flag.compare_exchange_strong(expected,tr

c++ - std::hex 和 std::setw 不适用于某些字符

我要做的是将字符串的字节转换为十六进制格式。基于thisanswer(和许多其他一致的)我试过代码:#include#include#includeintmain(){std::stringinputText=u8"A7°";std::stringstreamss;//printeverycharofthestringashexon2valuesfor(unsignedinti=0;i但对于一些以UTF8编码的字符,它不起作用。例如,在包含以UTF8编码的度数符号(°)的字符串中,结果是:ffffffc2ffffffb0而不是c2b0。现在我希望该算法能够处理单个字节,而不管它们的内容