gpt4 book ai didi

c++ - 为什么 strrchr() 返回 `char*` 而不是 `const char*` ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:45 25 4
gpt4 key购买 nike

函数 char* strrchr(const char *str, int ch) 返回 char* 内的指针 ( str ) ( const char * ) 最后一次出现 ch 的地方位于。

所以我们可以写出下面的代码而无需任何转换:

#include <string.h>
int main()
{
const char CONSTSTR[] = "foo/bar/foobar.txt";
char *ptr = strrchr (CONSTSTR, '/');
*ptr++ = 'B';
*ptr++ = 'A';
*ptr++ = 'D';
}

返回有什么好处char*而不是 const char*

编辑:
作为Shafik Yaghmour指出,How does strchr implementation work? 有很好的答案

由于我的代码是用 C++ 编写的,所以我将使用 <cstring>而不是 <string.h> .感谢您的回答;-)

然而,Mike Seymour's answer最适合这个问题。我什至添加了 a more detailed answer below清楚地说为 strrchr()是 C 函数(不允许重载),声明适合 constnon-const 字符串。因为strrchr()可以用非常量字符串调用,返回的字符串也应该是非常量

最佳答案

您正在查看 C 标准库 (<string.h>) 中的遗留函数。 C++ 库 ( <cstring> ) 引入了 appropriate const and non- const overloads ,因此您应该尽可能使用它。

关于c++ - 为什么 strrchr() 返回 `char*` 而不是 `const char*` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16860418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com