25得票3回答
无法从初始化字符串推导出成员变量中数组大小的原因是什么?

考虑以下代码:struct Foo { const char str[] = "test"; }; int main() { Foo foo; } 使用g++和clang++编译时出现错误,错误信息为: error: array bound cannot be...

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

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

25得票3回答
sprintf(buffer, "%s […]", buffer, […]) 安全吗?

我在处理一些代码时,看到有人使用了这种模式将字符串连接起来:sprintf(buffer, "%s <input type='file' name='%s' />\r\n", buffer, id); sprintf(buffer, "%s</td>", buffer)...

25得票6回答
在我的情况下,应该使用strncpy还是strlcpy?

我想要将src_str复制到dst_arr,应该使用什么方法?为什么?char dst_arr[10]; char *src_str = "hello"; 注意:我知道strlcpy并非所有地方都可用,这不是问题所在。 PS:读了很多关于strncpy和strlcpy好坏的东西后,我的头比电脑...

24得票4回答
const char*从哪里获得指向内存地址的指针?

可能这是一个简单的问题,但为什么 const char* 不需要指向内存地址? 例如: const char* a = "Anthony"; 而不是: const char *a = // Address to const char 像其他类型一样吗?

22得票6回答
在C++中选择字符串的前几个字符

我想使用C++选择一个字符串的前8个字符。目前我的方法是创建一个8个字符长的临时字符串,并将其填充为另一个字符串的前8个字符。 然而,如果另一个字符串不足8个字符长,我就会得到不需要的空格。string message = " "; const char * word = h...

22得票9回答
如果char*s是只读的,为什么我可以覆盖它们?

我的课程告诉我char*是静态/只读的,所以我认为这意味着在定义后不能编辑它们。但是当我运行:char* fruit = "banana"; printf("fruit is %s\n", fruit); fruit = "apple"; printf("fruit is %s\n", fru...

22得票9回答
C语言中的'\0'和printf()是什么?

在一门C语言入门课程中,我学到了字符串是以空字符\0结尾存储的。但如果我想要打印一个字符串,比如 printf("hello"),我发现它并没有以\0结尾。printf("%d", printf("hello")); Output: 5 但是这似乎是不一致的,就我所知,像字符串这样的变量会存...

21得票4回答
在C和C++中将C字符串转换为大写

在我编写C ++中的大写转换函数时,我注意到在C中没有得到预期的输出。 C ++函数#include <iostream> #include <cctype> #include <cstdio> void strupp(char* beg) { ...

20得票3回答
将枚举与字符串关联的正确方式

假设我有一些在程序中经常使用的字符串(用于存储状态等)。字符串操作可能是昂贵的,所以每当需要对它们进行操作时,我希望使用枚举。到目前为止,我已经看到了一些解决方案:typedef enum { STRING_HELLO = 0, STRING_WORLD } string_en...