10得票4回答
一个const char*字面字符串在进程存活期间是否持久存在?

我有以下类似的功能: const char* get_message() { return "This is a constant message, will NOT change forever!"; }; const char* get_message2() { ret...

9得票3回答
使用字符串字面量初始化std::strings时,它们是否以'\0'结尾?

我知道字符串对象没有以null结尾,但为什么这样也可以工作呢? std::string S("Hey"); for(int i = 0; S[i] != '\0'; ++i) std::cout << S[i]; 那么构造函数也会复制空终止符,但不会增加长度?它为什么要...

9得票5回答
C++:将读取的二进制文件存储到缓冲区

我正在尝试读取一个二进制文件并将其存储在缓冲区中。问题在于,该二进制文件中有多个以null终止的字符,但它们不是在末尾,而是出现在其他二进制文本之前,因此如果我在'\0'后面存储文本,它会在缓冲区中将其删除。 例如: char * a = "this is a\0 test"; cout ...

8得票1回答
PChar('')保证是指向#0的指针(而不是nil)吗?

我了解在Delphi中,空字符串(AnsiString或WideString)可以由nil指针或指向实际空字符串的指针表示。 通过实验,我已经证明在Delphi XE2(具有特定编译器设置)中PChar('') <> nil。但是这是否保证,可能会在将来的版本中更改,或者取决于某...

7得票5回答
为什么strrchr()返回char*而不是const char*?

函数char* strrchr(const char *str, int ch)会在str(const char *)中返回最后一个出现ch的指针(char*)。 因此,我们可以编写以下代码而无需进行任何强制转换: #include <string.h> int main() ...

7得票1回答
如何初始化一个没有空终止符的char数组?

struct Cmd { char cmd[4]; int arg; } struct Cmd cmd { "ABCD" , 0 }; // this would be buffer overflow 如何初始化这个cmd成员的字符数组?而不使用类似于strncpy的...