草庐IT

SOME_CONST

全部标签

c++ - read_some/write_some 和接收/发送之间的区别?

我开始使用BoostAsio的TCP套接字。read_some和有什么区别和receive和write_some有什么区别?和send?谢谢! 最佳答案 据我所知,read_some和receive实际上是在做同样的事情。我认为只接收调用read_some或反之亦然。一个命名来自将套接字视为文件(读/写)的想法,而另一个命名来自连接(发送/接收)点看法。write_some和send也应该如此。 关于c++-read_some/write_some和接收/发送之间的区别?,我们在Stac

c++ - 如何使用 libclang 确定成员函数是 const 还是 volatile?

我有一个类型为CXCursor_CXXMethod的CXCursor实例。我想知道函数是const还是volatile,例如:classFoo{public:voidbar()const;voidbaz()volatile;voidqux()constvolatile;};我在libclang的文档中找不到任何有用的东西。我尝试了clang_isConstQualifiedType和clang_isVolatileQualifiedType但这些似乎总是在C++成员函数类型上返回0。 最佳答案 我可以想到两种方法:使用libclan

c++ - 如何在我的程序中找到 "const char* + int"表达式

我正在进行源代码迁移,转换器程序没有将嵌入字符串的串联转换为整数。现在我有很多带有这种表达式的代码:f("sometext"+i);由于C/C++会将其解释为数组下标,因此f将接收"sometext"或"ometext",或“我的文字”...我的源语言将字符串与int的串联转换为字符串串联。现在我需要逐行浏览源代码并手动将前面的表达式更改为:f("sometext"+std::to_string(i));转换程序设法将本地“String”变量转换为“std::string”,得到表达式:std::stringsome_str=...;inti=...;f(some_str+i);这些很

c++ - 容器及其内容的 const 与非 const

带有容器类,如std::vector,有两个不同的常量概念:容器的概念(即它的大小)和元素的概念。好像std::vector混淆了这两者,使得下面的简单代码无法编译:structA{A(size_tn):X(n){}int&x(inti)const{returnX[i];}//error:X[i]isnon-const.private:std::vectorX;};请注意,即使std::vector的数据成员(指向数据开始和结束以及分配缓冲区结束的三个指针)没有通过调用它的operator[]来改变,该成员不是const——这不是很奇怪的设计吗?还要注意,对于原始指针,这两个常量概念被

c++ - 为什么类型 const double 没有被 lambda 从到达范围捕获,但 const int 是?

我似乎不明白为什么下面的constint类型的代码会编译:intmain(){usingT=int;constTx=1;autolam=[](Tp){returnx+p;};}$clang++-clambda1.cpp-std=c++11$虽然这个类型为constdouble的不是:intmain(){usingT=double;constTx=1.0;autolam=[](Tp){returnx+p;};}$clang++-clambda2.cpp-std=c++11lambda1.cpp:5:32:error:variable'x'cannotbeimplicitlycapture

c++ - 为什么 unique_ptr operator-> 不是 const-overloaded?

std::unique_ptr::operator->有签名pointeroperator->()constnoexcept;所以operator->是const但返回一个可变指针。这允许如下代码:voidmyConstMemberFunction()const{myUniquePtrMember->nonConstFunction();}为什么标准允许这样做,以及防止上述使用的最佳方法是什么? 最佳答案 把它想象成一个普通的指针:int*consti;是const指向非const的指针int.您可以更改int,但不是指针。intc

c++ - 无法将 'const pointer const' 传递给 const ref

假设你有一组指针(是的......):std::setmyTypeContainer;然后假设你想从SomeType的const方法中搜索这个集合:boolSomeType::IsContainered()const{returnmyTypeContainer.find(this)!=myTypeContainer.end();}这不起作用。方法中的thisptr是一个constSomeType*const,我无法放入find。问题是find采用const-ref,在这种情况下,这意味着传递的指针被视为const,而不是它指向的东西。有没有办法顺利解决这个问题(不改变设置的模板类型)?

C++ 重载运算符两次,一次返回非 const 引用,另一次返回 const 引用,偏好是什么?

我用相同的参数列表重载了一个运算符两次。但返回类型不同:T&operator()(par_list){blablabla}constT&operator()(par_list){blablabla}那么当我调用()运算符时,会根据什么偏好或情况调用哪个函数?我知道如果我在const函数下调用(),它必须是constT&。我只是好奇C++如何处理这种情况以及默认首选项如何工作。谢谢 最佳答案 这些函数不会互相重载;它们具有相同的签名,因此尝试重新定义相同的函数,这是一个错误。返回类型不是函数签名的一部分。要重载一个函数,您必须声明另一

c++ - 如何将字符串与 const char* 进行比较?

#include#include#include#includeusingnamespacestd;intmain(){stringcmd;while(strcmp(cmd.c_str(),"exit")==0&&strcmp(cmd.c_str(),"\exit")==0){cin>>cmd;cout我被卡住了。 最佳答案 std::string实例可以使用!=或==运算符直接与字符串文字进行比较。这使您的比较更加清晰。请注意,\e不是有效的字符转义,如果您的意思是文字\\,则需要将\加倍。while(cmd=="exit"&&c

c++ - 复制 const char*

我从函数接收一个c字符串作为参数,但我收到的参数将在稍后被销毁。所以我想复制它。这就是我的意思:classMyClass{private:constchar*filename;public:voidfunc(constchar*_filename);}voidMyClass::func(constchar*_filename){filename=_filename;//Thisisn'tgoingtowork}我想要实现的不是简单地将一个内存地址分配给另一个内存地址,而是复制内容。我希望文件名为“constchar*”而不是“char*”。我尝试使用strcpy,但它要求目标字符串是非