草庐IT

hex_char

全部标签

c++ - 为什么两次比较 char 变量比一次比较 short 变量更快

我认为一次比较一定比两次比较快。但是经过我的测试,我发现在debug模式下shortcompare要快一点,而在release模式下charcompare要快一些。我想知道真正的原因。以下是测试代码和测试结果。我写了两个简单的函数,func1()使用两个字符比较,func2()使用一个短比较。主函数返回临时返回值以避免编译优化忽略我的测试代码。我的编译器是GCC4.7.2,CPUIntel®Xeon®CPUE5-24300@2.20GHz(VM)。inlineintfunc1(unsignedcharword[2]){if(word[0]==0xff&&word[1]==0xff)re

c++ - 无法声明静态 constexpr char []

我已经阅读了与此问题相关的所有答案,但老实说,我不确定我是否完全理解该解决方案。我正在使用C++11。假设我真的很想声明类似staticconstexprcharvalue[]="foo"的东西.如果我使用NetBeans/TDM_MINGW,我会收到一个错误,我认为这是一个链接错误,报告未定义对“variable_name”的引用。在MSVS2015中尝试相同的代码,我得到“表达式未计算为常量”。一个简单的staticconstexprchar*解决了问题,但我失去了使用像sizeof这样的表达式的能力.简单直接的问题(如果可能直接回答):有没有办法声明一个staticconstex

c++ - 通过直接转换为 char 数组来序列化 POD 数据是否安全?

假设T是一个不包含指针的POD类型,我想序列化T(除了一些其他数据之外)。我创建了以下函数来执行此操作:templatevoidserialize(constT&source,char*&dest){*(T*)dest=source;dest+=sizeof(T);}templatevoiddeserialize(T&dest,char*&source){dest=*(T*)source;source+=sizeof(T);}这会导致任何问题吗,或者是否有任何编译器无法正常工作?换句话说,代码将:templateboolcheck_sanity(constT&obj){std::uni

c++ - 使用 char[] 作为参数、返回等可以解决任何性能问题吗?

首先是为了让C++代码更具可读性;我是编程编译器,我给了它:varswap=(intx,y)=>{//Assignmethodthatreturnstwoints,andgetstwointsasparametertovariablenamedswap.varNewX=yvarNewY=x}varincrement=(intx)=>{varResult=x+1}注意:函数返回首字母大写的任何变量。swap可以像...=swap(x,y).NewX一样使用,但是increment可以像一样使用。..=增量(x)。经过一些优化后,它生成了:(使swap和increment成为实际函数而不是

c++ - "std::string + char"表达式是否创建另一个 std::string?

下面的表达式是否创建了另一个std::string然后将其添加到s1?std::strings1="abc",s2="xyz";s1+=s2+'b';它是否应该防止这种情况(它们无需额外工作就可以添加到s1)?std::strings1="abc",s2="xyz";s1+=s2;s1+='b';这些规则是否也适用于“std::string+std::string”表达式? 最佳答案 所有涉及std::string的重载+运算符都会返回一个新的std::string对象。这是您在youfinallydecipherthereleva

c++ - 我可以在不复制的情况下将 std::vector<char> 重新解释为 std::vector<unsigned char> 吗?

我引用了std::vector我想用作接受std::vector的函数的参数.我可以不复制就这样做吗?我有以下功能并且有效;但是我不确定是否真的发生了复制-有人可以帮助我理解这一点吗?是否可以使用std::move以避免复制还是它已经没有被复制?staticvoidshowDataBlock(boolusefold,boolusecolor,std::vector&chunkdata){char*buf=chunkdata.data();unsignedchar*membuf=reinterpret_cast(buf);std::vectorvec(membuf,membuf+chun

c++ - 我尝试使用 wchar_t、char16_t 和 char32_t 类型打印汉字,但无济于事。

我正在尝试使用wchar_t、char16_t和char32_t类型打印汉字中,没有成功(liveexample)#includeintmain(){charx[]="中";//ChinesecharacterwithunicodepointU+4E2Dchary[]=u8"中";wchar_tz=L'中';char16_tb=u'\u4e2d';char32_ta=U'\U00004e2d';std::cout 最佳答案 由于您在Linux系统上运行测试,源代码是UTF-8,这就是为什么x和y是一样的东西。这些字节被std::co

c++ - 错误 : argument of type char* is incompatible with parameter of type LPCWSTR

#include#includeusingnamespacestd;intmain(){char*file="d:/tester";WIN32_FIND_DATAFindFileData;HANDLEhFind;hFind=FindFirstFile(file,&FindFileData);//lineoferrorsaysargumentoftypechar*isincompatiblewithparameteroftypeLPCWSTR}我无法理解错误。错误是什么以及如何解决错误?我正在制作一个控制台应用程序,需要检查目录中是否有文件。 最佳答案

c++ - std::vector< std::vector<unsigned char>> 或 std::deque< std::vector<unsigned char>>?

我有一个现有的算法,如果可能的话,我需要稍微优化它。目前无法在此算法中进行大量更改。该算法适用于std::vector>的实例.它看起来像这样:typedefstd::vectorinternal_vector_t;std::vectorinternal_vectors;while(fetchinglotsofrecords){internal_vector_ttmp;//reads1Mbofcharsintmp...internal_vectors.push_back(tmp);//somemorework}//usethisinternal_vectors算法在internal_v

c++ - 如何识别代码中const char*和const char[]的类型?

constchar*s1="teststirg";constchars2[]="teststirg";我想要一个方法告诉我s1是“char*”而s2是“char[]”,怎么写这个方法? 最佳答案 使用模板:templateboolIsArray(T(&a)[SIZE]){returntrue;}templateboolIsArray(T*p){returnfalse;}这将在运行时进行评估。用法:if(IsArray(s1))...if(IsArray(s2))...如果有兴趣,您可以使用一些高级技术,它会告诉您这是编译时间。编辑: