草庐IT

CHAR_LENGTH

全部标签

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++ - 可变参数模板 : "Sorry, unimplemented: cannot expand ' Identifier. 的 GCC 错误。 .' into a fixed-length argument list"

在GCC上使用C++11进行可变参数模板编程时,偶尔会收到一条错误消息,提示“抱歉,未实现:无法将'标识符...'扩展为固定长度的参数列表。”如果我删除代码中的“...”,我会得到一个不同的错误:“错误:参数包没有用'...'扩展”。因此,如果我输入了“...”,则GCC将其称为错误,如果我将“...”取出,则GCC也将其称为错误。我能够处理这个问题的唯一方法是使用不同的方法从头开始完全重写模板元程序,并且(幸运的是)我最终想出了不会导致错误的代码。但我真的很想知道我做错了什么。尽管谷歌搜索并进行了大量实验,但我无法确定我在产生此错误的可变参数模板代码和没有错误的代码之间所做的不同。错

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);

c++ - 如何在 C++ 中指定 unsigned char 类型的整数文字?

我可以指定一个unsignedlong类型的整数文字,如下所示:constunsignedlongexample=9UL;对于unsignedchar我该如何处理?constunsignedcharexample=9U?;这是避免编译器警告所必需的:unsignedcharexample2=0;...min(9U?,example2);我希望避免我目前拥有的冗长解决方法,并且没有在调用min的行中出现“unsignedchar”而不在单独的行上的变量中声明9:min(static_cast(9),example2); 最佳答案 C+