20得票18回答
为什么在C++中使用C字符串?

现在在C++中使用C字符串有什么好的理由吗?我的教科书在某些地方使用它们作为示例,但我真的觉得使用std::string会更容易。

25得票2回答
为什么string::data()不提供可变的char*?

在 c++11 的 array,string 和 vector 中都有 data 方法,它们的作用是: 返回指向底层数组的指针,该数组用作元素存储。即使容器为空,范围 [data(); data() + size()) 也始终是有效范围。[Source] 对于所有适用的容器,该方法提供...

16得票6回答
为什么在C++中应该使用std::string而不是C风格的字符串?

在几乎每个发布的源代码中,都会出现“应该始终使用 std::string 而不是 C 风格字符串(char *)”的建议。虽然这个建议无疑是好的,但实际上被讨论的问题并不允许详细阐述建议的原因。本问题旨在作为占位符。 一个好的答案应该涵盖以下方面(详细说明): 为什么在 C++ 中应该...

7得票1回答
在函数内返回一个填充了const char*的向量,这是否是良好定义的行为?

我目前在学习Vulkan。在其中一个教程中,我看到了一个大致执行以下操作的函数: #define SOMESTRING "Hello World!" std::vector<const char*> buildVector() { std::vector<cons...

16得票3回答
在C语言中,我能否像在字符数组声明中一样,在指针声明中初始化一个字符串?

这两行代码是否可以实现相同的结果?如果我把这些代码放在一个函数中,那么在两种情况下字符串都存储在堆栈中吗?除了在第一行代码中不需要声明空终止符之外,是否有强烈的理由使用其中一种方式?char s[] = "string"; char* s = "string\0";

9得票5回答
在C语言中向字符串数组中添加元素

我有一个给定大小的字符串数组,不使用任何内存分配,如何将内容追加到其中? 比如我运行代码,它在等待你输入想要添加的内容,你输入了"bond",如何将其添加到数组A[10]中?

33得票7回答
为什么strdup被认为是邪恶的?

我看到一些海报声称strdup是邪恶的。 对此是否有共识?我已经使用它而没有任何罪恶感,并且看不出为什么它比使用malloc/memcpy更糟。 唯一能想到会让strdup声名狼藉的事情可能是调用者可能会误用它(例如,没有意识到他们必须释放返回的内存;尝试将字符串连接到 strdup'ed ...

29得票5回答
在编译时确定#define字符串的长度

我有一个C程序(一个Apache模块,即程序经常运行),它将在套接字上write()一个以0结尾的字符串,因此我需要知道它的长度。 该字符串被定义为:#define POLICY "<?xml version=\"1.0\"?>\n" \ "<!DOCTYPE cro...

10得票4回答
s[i] - '0'的意思是什么?

以下代码来自K&R教材,第71页: val =10.0*val+s[i] -'0' 这里的 s[i] -'0' 是什么意思?

14得票9回答
如何在C++中有效地检查字符串是否包含特殊字符?

我试图寻找更好的方法来检查字符串中是否有特殊字符。在我的情况下,除了字母数字和下划线之外的任何东西都被视为特殊字符。目前,我有一个包含特殊字符的字符串,例如std :: string ="! @ # $%^&". 然后我使用 std::find_first_of() 算法来检查字符串中...