草庐IT

char_sequence

全部标签

c++ - 内存: "signed char *" vs "unsigned char *"的字节读取

人们经常需要一次从内存中读取一个字节,就像在这个幼稚的memcpy()中一样实现:void*memcpy(void*dest,constvoid*src,size_tn){char*from=(char*)src;char*to=(char*)dest;while(n--)*to++=*from++;returndest;}但是,我有时会看到人们明确使用unsignedchar*而不仅仅是char*.当然,char和unsignedchar可能不相等。但是我是否使用char*有区别吗?,signedchar*,或unsignedchar*什么时候按字节读/写内存?更新:实际上,我完全知

c++ - 为什么使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的这两段代码会有不同的结果?

我有这段代码,如果你注释掉注释“但这不起作用?!”的行,它编译得很好,但如果你不这样做,编译器会产生错误。至少,gcc8.2generatesanerror.但是,他们看起来和我一模一样。有什么问题?这是法律法规吗?templatestructtest_template{staticintsize(){returnx;}};constexprintce_strlen(charconst*s){inti=0;while(s[i])++i;returni;}intjoe(){constexprintplen=ce_strlen(__PRETTY_FUNCTION__);//Thiswork

c++ - 为什么使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的这两段代码会有不同的结果?

我有这段代码,如果你注释掉注释“但这不起作用?!”的行,它编译得很好,但如果你不这样做,编译器会产生错误。至少,gcc8.2generatesanerror.但是,他们看起来和我一模一样。有什么问题?这是法律法规吗?templatestructtest_template{staticintsize(){returnx;}};constexprintce_strlen(charconst*s){inti=0;while(s[i])++i;returni;}intjoe(){constexprintplen=ce_strlen(__PRETTY_FUNCTION__);//Thiswork

c++ - 在没有 reinterpret_cast 的情况下将 unsigned char 转换为 std::string 的方法?

我在std::string中有一个我需要的unsignedchar数组,但我目前的方式使用我想避免的reinterpret_cast。有没有更清洁的方法来做到这一点?unsignedcharmy_txt[]={0x52,0x5f,0x73,0x68,0x7e,0x29,0x33,0x74,0x74,0x73,0x72,0x55}unsignedintmy_txt_len=12;std::stringmy_std_string(reinterpret_cast(my_txt),my_txt_len); 最佳答案 使用迭代器构造函数:s

c++ - 在没有 reinterpret_cast 的情况下将 unsigned char 转换为 std::string 的方法?

我在std::string中有一个我需要的unsignedchar数组,但我目前的方式使用我想避免的reinterpret_cast。有没有更清洁的方法来做到这一点?unsignedcharmy_txt[]={0x52,0x5f,0x73,0x68,0x7e,0x29,0x33,0x74,0x74,0x73,0x72,0x55}unsignedintmy_txt_len=12;std::stringmy_std_string(reinterpret_cast(my_txt),my_txt_len); 最佳答案 使用迭代器构造函数:s

c++ - 从 char** 到 const char** 的隐式转换

为什么我的编译器(GCC)没有从char**隐式转换为constchar**?以下代码:#includevoidprint(constchar**thing){std::cout给出以下错误:oi.cpp:Infunction‘intmain(int,char**)’:oi.cpp:8:12:error:invalidconversionfrom‘char**’to‘constchar**’[-fpermissive]oi.cpp:3:6:error:initializingargument1of‘voidprint(constchar**)’[-fpermissive]

c++ - 从 char** 到 const char** 的隐式转换

为什么我的编译器(GCC)没有从char**隐式转换为constchar**?以下代码:#includevoidprint(constchar**thing){std::cout给出以下错误:oi.cpp:Infunction‘intmain(int,char**)’:oi.cpp:8:12:error:invalidconversionfrom‘char**’to‘constchar**’[-fpermissive]oi.cpp:3:6:error:initializingargument1of‘voidprint(constchar**)’[-fpermissive]

c++ - make_unique 值是否初始化 char 数组

例如-#includeintmain(){constautobufSize=1024;autobuffer=std::make_unique(bufSize);}这里的缓冲区是否已经填充了'\0'字符,或者我必须手动填充它以避免垃圾值。有什么可能的方法来做到这一点,std::memset(&buffer.get(),0,bufSize)就足够了吗? 最佳答案 如果您不提供构造函数参数,则所有make_*函数都会对类型使用值初始化。由于make_unique的数组形式不带任何参数,它会将元素清零。

c++ - make_unique 值是否初始化 char 数组

例如-#includeintmain(){constautobufSize=1024;autobuffer=std::make_unique(bufSize);}这里的缓冲区是否已经填充了'\0'字符,或者我必须手动填充它以避免垃圾值。有什么可能的方法来做到这一点,std::memset(&buffer.get(),0,bufSize)就足够了吗? 最佳答案 如果您不提供构造函数参数,则所有make_*函数都会对类型使用值初始化。由于make_unique的数组形式不带任何参数,它会将元素清零。

c++ - CString 到 char*

我们在大部分代码中都使用CString类。但是有时我们需要转换为char*。目前我们一直在使用variable.GetBuffer(0)执行此操作,这似乎有效(这主要发生在将Csting传递给函数需要char*的函数时)。该函数接受了这一点,我们继续前进。但是我们最近开始担心这是如何工作的,以及是否有更好的方法来做到这一点。我理解它的工作方式是将一个char指针传递给指向CString中第一个字符的函数,并且一切正常。我想我们只是担心内存泄漏或任何不可预见的情况,这可能不是一个好主意。 最佳答案 如果您的函数只需要读取字符串而不需要