草庐IT

add_const

全部标签

c++ - 如何在 std::string 中存储 const char*?

char*buffer1="abc";constchar*buffer2=(constchar*)buffer;std::stringstr(buffer2);这行得通,但我想声明std::string对象,即str,一次并多次使用它来存储不同的常量字符*。出路在哪里? 最佳答案 您可以重新分配:constchar*buf1="abc";constchar*buf2="def";std::stringstr(buf1);str=buf2;//Callsstr.operator=(constchar*)

c++ - 如果通过模板函数中的 const 引用传递,数组不会衰减为指针

这个问题来自这个:c++passarraytofunctionquestion但由于OP接受了答案,我想现在没有人会阅读它。我在g++上试过这段代码。似乎数组在传递给此函数时不会衰减为指针(该函数返回正确的结果):#includetemplatestd::size_tsize_of_array(Tconst&array){returnsizeof(array)/sizeof(*array);}intmain(){inta[5];std::cout另一个用户(sharptooth)说他在关闭内联的VC++10上有相同的行为。谁能解释一下?谢谢。 最佳答案

c++ - 如何从 'char const*' 中删除常量

看起来std::remove_const无法移除constchar*的常量性。考虑以下代码:#include#include#includetemplatestructS{staticvoidfoo(){std::cout::type).name()::foo();}此程序的输出(在VisualStudio2010上):charconst*charconst*在gcc中我们有可读的输出(代码here):PKcPKc我希望在Microsoft编译器的第二行获得char*,在gcc上获得任何(但不同于第一行)。我究竟做错了什么?如何将charconst*转换为char*?

c++ - 链接器错误 - 带有 libboost_thread 的 macOS 上 undefined symbol std::string::c_str() const?

我从homebrew安装了boost1.55.0在macos小牛队上。获取链接器异常-找不到std::string::c_str(),我不明白为什么。这可能是Homebrew软件的问题吗?我尝试直接从boost编译boost1.55.0,它甚至没有在macOS上构建。这段代码:#include#include#include#includetypedefstd::unordered_mapStringMap;staticboost::thread_specific_ptr>rlist;intmain(){return0;}使用此命令行编译:g++-std=c++11main.cpp-I

c++ - 无法在参数传递中将 'const char*' 转换为 'WCHAR*'

我在文档中写道,用户名、IP和密码必须是constchar*,当我将变量放入constchar时,出现此错误消息。这是我的代码:#include#include#include#includeusingnamespacestd;typedefint(__cdecl*MYPROC)(LPWSTR);intmain(){HINSTANCEhinstDLL;MYPROCProcAdd;hinstDLL=LoadLibrary("LmServerAPI.dll");if(hinstDLL!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstDLL,"LmSer

解决Java --add-opens java.base/java.lang=ALL-UNNAMED的具体操作步骤

Java--add-opensjava.base/java.lang=ALL-UNNAMED在Java9及以后的版本中,引入了模块化系统,它允许将代码和资源划分为多个模块以提高代码的可维护性和安全性。然而,由于模块的隔离性,某些代码可能无法在模块之间进行正常的交互。这时,我们可以使用Java --add-opens选项来解决此类问题。什么是--add-opens选项?--add-opens是Java9引入的一个命令行选项,它允许我们在模块之间打开指定的包,以便其他模块可以访问这些包中的类和成员。特别地,--add-opens选项用于在指定的模块中打开指定的包,并将其对所有模块的访问权限设置为“

c++ - 使用(float&)int可以进行类型修剪,(float const&)int可以像(float)int那样转换吗?

VS2019版本x86。templatefloatget()const{intf=_mm_extract_ps(fmm,i);return(floatconst&)f;}当使用return(float&)f;编译器使用时extractpsm32,...movssxmm0,m32。正确的结果当使用return(floatconst&)f;编译器使用时extractpseax,...movdxmm0,eax。错误的结果T&和Tconst&首先是T,然后是const的主要思想。const只是程序员的某种协议(protocol)。您知道您可以解决它。但是汇编代码中没有任何const,只能输入f

c++ - 当字符串超出范围时,将 string::c_str() 分配给 const char*

我对基本的C++用法有疑问。下面的代码使用gcc/LInux编译,打印正确。字符串test超出范围,所以它的c_str()值也应该无效,不是吗?我错了还是我误解了constchar*的意思?#includeintmain(){constchar*a="aaaa";std::cout 最佳答案 你是对的,你的代码无效,因为它使用了一个生命周期已经结束的对象。它是“偶然”起作用的,你不能依赖它。 关于c++-当字符串超出范围时,将string::c_str()分配给constchar*,我们

c++ - 从 const 方法调用成员的非常量方法

我很惊讶地发现“常量”中的这个“洞”:#includeclassA{intr;public:A():r(0){}voidnonconst(){puts("Iaminurnonconstmethod");r++;}};classB{Aa;A*aPtr;public:B(){aPtr=newA();}voidgo()const{//a.nonconst();//illegalaPtr->nonconst();//legal}};intmain(){Bb;b.go();}所以基本上从const方法B::go(),你可以调用non-const成员函数(恰如其分地命名为nonconst())如果

c++ - CMake 找不到源文件(add_executable)

我一直在努力遵循供应商的教程:CMake-Tutorial,查看此处的文档:Cmake-Documentation,并尽可能地利用YouTube上的资源进行self教育,但我真的很难为使用OpenGL设置环境。在修改了Glitter样板文件以及open.gl和learnopengl.com上的教程之后,我决定了解构建过程非常重要,不能不进行调查。在我的调查中,我遇到了CMake错误“找不到源文件”,详情如下所示。问题似乎是由“add_executable”引起的。此处提出了类似的问题:CMake-Cannotfindfile.解决方案涉及确保为每个变量正确设置${PROJECT_SOU