草庐IT

d-char-sequence

全部标签

c++ - 为什么 std::hash<T> 不专用于 char*?

为什么C++标准不指定std::hash专门用于char*,constchar*,unsignedchar*,constunsignedchar*,ETC?即,它将散列C字符串的内容,直到找到终止null。将我自己的特化注入(inject)std的任何危害我自己的代码的命名空间? 最佳答案 Whydoesn'ttheC++standardspecifythatstd::hashisspecializedforchar*,constchar*,unsignedchar*,constunsignedchar*,etc?看起来它起源于pr

c++ - 比较 C 中 char[] 的相等性

我有两个变量:charcharTime[]="TIME";charbuf[]="SOMETHINGELSE";我想检查这两个是否相等...使用charTime==buf不起作用。我应该使用什么,有人可以解释为什么使用==不起作用吗?此操作在C和C++中会有所不同吗? 最佳答案 charcharTime[]="TIME";charbuf[]="SOMETHINGELSE";C++和C(删除C的std::):boolequal=(std::strcmp(charTime,buf)==0);但真正的C++方式:std::stringcha

c++ - 比较两个 char* 是否相等

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhatistheproperfunctionforcomparingtwoC-stylestrings?我的匹配条件不起作用!有人可以建议如何与C风格的字符串进行比较吗?voidsaveData(stringline,char*data){char*testString=newchar[800];char*stpr;inti=0;boolisData=false;char*com=data;strcpy(testString,line.c_str());stpr=strtok(testString,",")

c++ - 如何在构造函数中初始化 char 数组?

我在声明和初始化char数组时遇到问题。它总是显示随机字符。我创建了一小段代码来展示我在较大程序中的尝试:classtest{private:charname[40];intx;public:test();voiddisplay(){std::cout>x;}};test::test(){charname[]="Standard";}intmain(){test*test1=newtest;test1->display();}抱歉,如果我的格式不好,我几乎无法理解这个网站,更不用说如何修复我的代码了:( 最佳答案 如果没有特殊原因不

c++ - 如何将 "invalid operands of types ' const char' 修复为二进制 'operator+'?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIconcatenatemultipleC++stringsononeline?根据thisC++std::string使用operator+连接。那么为什么这段代码usingnamespacestd;stringsql="createtablem_table("+"pathTEXT,"+"qualityREAL,"+"foundINTEGER);";导致这个错误?invalidoperandsoftypes'constchar[22]'and'constchar[17]'tobinary'oper

c++ - 使用 mbstowcs_s 将 char* 转换为 wchar_t*

我试过将char*转换为wchar_t*,但我在使用mbstowcs时遇到了一些问题,而VisualStudio需要mbstowcs_s...char*port;size_tsize=strlen(port)+1;wchar_t*portName=newwchar_t[size];mbstowcs(portName,port,size);如何将函数更改为mbstowcs_s? 最佳答案 当使用安全方法的修复如此简单时,我不建议禁用安全代码警告,所以你开始吧:constchar*port="8080";size_tsize=strle

c++ - 将子字符串从 const char* 复制到 std::string

是否有任何可用的复制函数允许子字符串到std::string?例子-constchar*c="Thisisateststringmessage";我想将子字符串“test”复制到std::string。 最佳答案 您可以使用std::stringiteratorconstructor用C字符串的子字符串初始化它,例如:constchar*sourceString="Helloworld!";std::stringtestString(sourceString+1,sourceString+4);

c++ - 有人可以解释 char 的签名是如何特定于平台的吗?

我最近读到两者之间的区别charunsignedchar和signedchar特定于平台。我不太明白这个?这是否意味着位序列可以因平台而异,即平台1的符号是第一位,平台2的符号可能在末尾?您将如何针对此进行编码?基本上我的问题来自看到这一行:typedefunsignedcharbyte;我不明白标牌的相关性? 最佳答案 假设您的平台有八位字节,并假设我们有位模式10101010。对于signedchar,该值为−86。但是,对于unsignedchar,相同的位模式表示170。我们没有移动任何位;它是相同的位,以两种不同的方式解释

c++ - 获取 char 数组的一部分

我觉得这是一个非常愚蠢的问题,但我似乎无法在任何地方找到答案!是否可以从一个字符数组中获取一组字符?抛出一些伪代码:chararry[20]="helloworld!";charpart[10]=arry[0-4];printf(part);输出:hello那么,我可以从这样的数组中获取一段字符,而无需循环并逐个字符地获取它们或转换为字符串,以便我可以使用substr()吗? 最佳答案 您可以使用memcpy(或strncpy)获取子字符串:memcpy(part,arry+5/*Offset*/,3/*Length*/);part

C++ offsetof char* 算法

在thisanswer,int8_t*用于(字节)指针运算:std::size_toffset=offsetof(Thing,b);Thing*thing=reinterpret_cast(reinterpret_cast(ptr)-offset);我过去一直使用char*但评论真的很困惑,没有人回应,所以我发布了这个单独的问题。char*是否有效,以及进行这些计算的首选方式? 最佳答案 您必须使用char*:在指针上使用reinterpret_cast和int8_t*时的行为不是int8_t的东西是undefined。转换为cha