gpt4 book ai didi

c++ - 如何避免在 C++ 中从字符串常量到 'char*' 的弃用转换

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

我想在 C++ 中调用以下代码,我无法更改它:

void getAge(char *name)
{
// do something
}

当我用 getAge("hello"); 调用它时,它有以下警告:

warning: deprecated conversion from string constant to 'char*'

但是C代码中没有警告。有什么区别,如何更改调用以避免 C++ 中的警告?

最佳答案

the function […] can not be changed

然后围绕该函数编写一个包装器并复制该字符串——或者,如果您感到幸运(=您知道该字符串不会在原始函数中被修改),显式丢弃 const -性:

void getAge(char const* name) {
the_namespace::getAge(const_cast<char*>(name));
}

如果您不确定该函数是否修改了它的参数,请使用类似下面的内容——但是,如果是这种情况,则使用字符串文字调用该函数 (getAge("hello"))无论如何都会无效。

void getAge(char const* name) {
std::string buffer(name);
the_namespace::getAge(&buffer[0]);
}

这里我们将字符串复制到一个可修改的缓冲区中,并将其第一个字符的地址传递给原始函数。

关于c++ - 如何避免在 C++ 中从字符串常量到 'char*' 的弃用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171142/

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