草庐IT

months3char

全部标签

c++ - 警告 : ISO C++ forbids converting a string constant to ‘char*’ for a static `constexpr char*` data member

这个问题在这里已经有了答案:constexprconstvsconstexprvariables?(3个回答)关闭3年前。为什么这段代码会返回警告warning:ISOC++forbidsconvertingastringconstantto‘char*’[-Wwrite-strings]如果Aconstexprspecifierusedinanobjectdeclarationornon-staticmemberfunction(untilC++14)impliesconst.Aconstexprspecifierusedinafunctionorstaticmembervariab

c++ - 为什么 c++ 中 char 和 bool 的大小相同?

我正在阅读C++编程语言。Stroustrup在其中指出sizeof(char)==1和1.具体取决于实现。为什么像boolean值这样简单的值会占用与字符相同的空间? 最佳答案 在现代计算机体系结构中,字节是最小的可寻址内存单元。要将多个位打包到一个字节中,需要应用额外的位移操作。在编译器级别,这是内存与速度要求之间的权衡(在高性能软件中,那些额外的位移操作会不必要地增加和减慢应用程序的速度)。 关于c++-为什么c++中char和bool的大小相同?,我们在StackOverflow

c++ - 从 'const char*' 到 'char*' 的无效转换

有一个如下所示的代码。我在传递参数时遇到问题。stringstreamdata;char*addr=NULL;strcpy(addr,retstring().c_str());retstring()是一个返回字符串的函数。//morecodeprintfunc(num,addr,data.str().c_str());我得到了错误invalidconversionfrom'constchar*'to'char*'.initializingargument3of'voidPrintfunc(int,char*,char*)'onargument3ofthefunction在上面一行。函数

c++ - 为什么 std::ostream 和 char 之间的 operator<< 函数是非成员函数?

当我运行以下程序时#includeintmain(){charc='a';std::cout我得到了输出a97进一步挖掘http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt,我注意到std::ostream::operator没有具有char的重载作为参数类型。函数调用std::cout.operator解析为std::ostream::operator,它解释了输出。我假设operatorstd::ostream之间的函数和char在别处声明为:std::ostream&operator否则,std::cout

c++ - 将文件读入 std::vector<char> 的有效方法?

我想避免不必要的复制。我的目标是:std::ifstreamtestFile("testfile","rb");std::vectorfileContents;intfileSize=getFileSize(testFile);fileContents.reserve(fileSize);testFile.read(&fileContents[0],fileSize);(这不起作用,因为reserve实际上并没有在vector中插入任何东西,所以我无法访问[0])。当然,std::vectorfileContents(fileSize)有效,但初始化所有元素会产生开销(fileSize

C++比较char数组和字符串

我正在尝试将字符数组与这样的字符串进行比较:constchar*var1="";var1=getenv("myEnvVar");if(var1=="dev"){//dostuff}这个if语句永远不会验证为真......当我输出var1它是“dev”时,我在想它可能与一个以null结尾的字符串有关,但是“dev”的strlen和var1是相等的。..我还认为var1=="dev"可能是在将"dev"与var1的内存位置而不是值进行比较。*var1=="dev"导致错误....尝试了很多方法,对于精明的c++开发人员来说可能是一个简单的解决方案(我很久没有编写c++代码了)。编辑:我们已

c++ - 如何获得char *(char数组)的真实长度和总长度?

对于char[],我可以通过以下方式轻松获取其长度:chara[]="aaaaa";intlength=sizeof(a)/sizeof(char);//length=6但是,我不能这样做来获取char*的长度:char*a=newchar[10];intlength=sizeof(a)/sizeof(char);因为,我知道,这里的a是一个指针,因此这里的length将始终是4(或其他不同的系统)。我的问题是我怎样才能获得char*之后的长度?我知道有人可能会质疑我你已经知道它的10因为你刚刚创建了它。我想知道这一点,因为获取它的长度的这个步骤可能距离它的创建还有很长的路要走,我不想

c++ - 将 std::string 转换为 std::vector<char>

我正在使用一个库,它接受数据作为char的vector。我需要将string传递给库。我考虑使用std::vector构造函数,它接受迭代器来执行转换-但想知道是否有更好的方法?/*Note:json_strisoftypestd::string*/conststd::vectorcharvect(json_str.begin(),json_str.end()); 最佳答案 不,就是这样做的,直接用字符串中的数据初始化vector。正如@ildjarn在他的评论中指出的那样,如果出于某种原因您的数据缓冲区需要以空值终止,您需要使用c

c++ - 重载运算符<< : cannot bind lvalue to ‘std::basic_ostream<char>&&’

我有一个使用嵌套类的类,并且想使用嵌套类operator定义operator在上层类(Class)。这是我的代码的样子:#include#includetemplatestructclassA{structclassB{templatefriendinlinestd::ostream&operator::classB&b);};classBroot;templatefriendstd::ostream&operator&tree);};templateinlinestd::ostream&operator&tree){outinlinestd::ostream&operator::cl

c++ - 从 char(不是 char*)到 std::string 的首选转换

我有一个char,一个普通的旧字符,我想把它变成一个std::string。std::string(char)当然不存在。我可以创建一个char数组并将其复制进去,我可以通过字符串流,或许多其他小的迂回路线。目前,我更喜欢boost::lexical_cast,但对于这个简单的任务来说,即使这样也显得过于冗长。那么首选的方式是什么? 最佳答案 std::string有一个构造函数,它接受一个数字和一个字符。字符将重复给定的次数。因此,您应该使用:std::stringstr(1,ch);