草庐IT

const-char

全部标签

c++ - 如何将 basic_filebuf 与 char 以外的元素类型一起使用?

假设我想使用basic_filebuf读取文件的内容。我有一个名为boost::uintmax_t的类型,它的大小为8字节。我正在尝试编写以下内容:typedefbasic_filebuffile;typedefistreambuf_iteratorifile;filef;vectordata,buf(2);f.open("test.txt",std::ios::in|std::ios::binary);f.pubsetbuf(&buf[0],1024);ifilestart(&f),end;while(start!=end){data.push_back(*start);start+

c++ - 如何将 hash_map 与 char* 一起使用并进行字符串比较?

我正在使用std::hash_map并以某种方式设法使其工作,但现在发现默认的比较功能euqal_to进行指针比较而不是字符串比较。我已经通过制作我自己的比较类型(使用C的strcmp并且它大约是5LOC)来解决这个问题,但是如果STL中还没有一个比较类型,我会感到有点震惊。那么,有没有比较器可以做字符串比较呢?Relatedlink 最佳答案 嗯,std::strcmp当你执行#include时由C++定义.SGI'shash_mapdoc中的示例提供一个strcmp-基于为char*制作自己的相等性测试函数的示例(引用自SGI文

c++ - wxWidgets 的 EVT_CHAR_HOOK 有什么作用?

我正在维护一个wxWidgetsC++应用程序,它使用EVT_CHAR_HOOK来捕获高级窗口中的关键事件。我找不到关于此事件的任何真实文档,但我可以推测它以某种优先于“标准”键事件的方式拦截键事件。我刚刚发现的一件令人不安的事情是,如果此Hook就位,则可能已定义的任何快捷键将不再触发它们的事件,即使事件处理程序在事件上调用Skip()也是如此。我在谷歌上搜索时也看到一些帖子似乎暗示EVT_CHAR_HOOK可能并非在所有平台上都受支持。这是真的吗?我应该使用它吗? 最佳答案 我刚刚查看了src/gtk/window.cpp并找到

c++ - const 重载的 operator[] 函数及其调用

我在类array中定义了两个版本的重载operator[]函数。ptr是指向array对象第一个元素的指针。int&array::operator[](intsub){returnptr[sub];}和intarray::operator[](intsub)const{returnptr[sub];}现在,如果我定义一个const对象integer1只能调用第二个函数......但是如果我创建一个非const对象然后调用如下:cout这里调用了哪个函数? 最佳答案 在您的第二个示例中,将调用非常量版本,因为不需要转换,不需要转换的调

c++ - ARM C++ - 如何将 const 成员放入闪存中?

我有这个代码classIO{public:IO(LPC_GPIO_TypeDef*port,intpin):_pin(pin),_port(port){};constint_pin;LPC_GPIO_TypeDef*const_port;voidtest(){LPC_GPIO0->FIOSET=0;}};IOled1(LPC_GPIO0,5);intmain(){led1.test();return0;}当我编译它时,我得到了textdatabssdechexfilename65608664298lpc17xx我希望const_port和_pin变量存储在闪存中,因为它们被标记为con

c++ - reinterpret_cast<int*>(char*) 与 static_cast<int*>(static_cast<void*>(char*)) - 使用哪个?

当你动态分配了一个char*类型的缓冲区并想将它转换为特定类型时,你是否应该使用类似的东西reinterpret_cast(char*)或者类似的东西static_cast(static_cast(char*))为什么?我个人很想使用后者,因为对我来说,它并不是真正的数据“重新解释”(而只是一种分配缓冲区的机械方式)而且它看起来不像是一个来源错误的方式可能与典型的reinterpret_cast相同,但这是正确的直觉吗? 最佳答案 AccordingtoDaveAbrahams,使用链式static_casts是强制指针类型的正确、

c++ - 将参数作为 const 引用与普通引用传递

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Howcomeanon-constreferencecannotbindtoatemporaryobject?有这样的代码:voidfun_ref(int&par){}voidfun_const_ref(constint&par){}intmain(){//fun_ref(2);error:invalidinitializationofnon-constreferenceoftype‘int&’fromatemporaryoftype‘int’fun_const_ref(2);charvar=3;//fun_

c++ - 用包含 const 成员的结构实例替换堆栈与静态变量

使用gcc4.4.3版本如下:gcc-g-xc++-lstdc++-std=c++98-o./main./main.cppmain.cpp中的这段代码可以正常编译:#includestructA{A():m_flag(false){}constboolm_flag;};staticAaa=A();intmain(intargc,char*argv[]){Aa;//Notstatic=copyOKAb(a);Ac=b;Ad=A();//Static=copynotOK//aa=A();}但是如果我取消注释aa=A();我会得到:./main.cpp:Inmemberfunction'A&

c++ - 指针到指针到 Const 的转换

我正在读一本名为C++Gotchas的书这解释了const指针之间的转换,我在理解以下规则时遇到了一些麻烦:TwopointertypesT1andT2aresimilarifthereexistsatypeTandintegern>0suchthat:T1iscv1,0pointertocv1,1pointerto...cv1,n−1pointertocv1,nTand,T2iscv2,0pointertocv2,1pointerto...cv2,n−1pointertocv2,nTwhereeachcvi,jisconst,volatile,constvolatile,ornoth

c++ - 指向 const 成员函数的非类型模板函数指针

我正在编写一个委托(delegate)类,但它无法采用const成员函数。这是一个测试用例:classfoo{public:voidMemberFunction(){printf("nonconstmemberfunction\n");}voidConstMemberFunction()const{printf("constmemberfunction\n");}};templatevoidCall(C*instance){(instance->*Function)();}intmain(intargc,char**argv){foobar;Call(&bar);Call(&bar);