gpt4 book ai didi

c++ - 如何将 const char* 存储到 char*?

转载 作者:IT老高 更新时间:2023-10-28 23:13:04 26 4
gpt4 key购买 nike

我有 this code按预期工作:

#define MAX_PARAM_NAME_LEN 32

const char* GetName()
{
return "Test text";
}

int main()
{
char name[MAX_PARAM_NAME_LEN];
strcpy(name, GetName());

cout << "result: " << name << endl;
}

如果我想将结果存储到 char *(因为我使用的框架中的某些函数仅使用 char * 作为输入)而不使用strcpy (为了代码的实用性和可读性,以及学习),我该怎么办?保持在 const 中,效果很好:

const char* name;
name = GetName();

但我还有 const

尝试只使用 char*:

char* name;
name = GetName();

我得到 从 'const char*' 到 'char*' 的无效转换。这种转换的最佳习惯是什么?

最佳答案

这种转换的最佳习惯是在整个代码中使用 std::string。由于您使用的框架将 const char* 作为其输入,因此您始终可以将 c_str() 的结果传递给它。调用你的 std::string:

std::string GetName() {
return "Test text";
}

int main() {
std::string name = GetName();
int res = external_framework_function(name.c_str());
cout << "result: " << res << " for " << name << endl;
}

第二好的方法是在您的代码中使用 const char*:

const char* name = GetName();

由于您使用的框架采用 const char*,因此您在这里也很好。

如果您需要一个非常量指针,则无法复制字符串。您可以创建一个为您执行此操作的函数,但您仍需负责释放从中获得的拷贝:

char* copy(const char* orig) {
char *res = new char[strlen(orig)+1];
strcpy(res, orig);
return res;
}
...
char *name = copy(GetName());
...
delete[] name;

关于c++ - 如何将 const char* 存储到 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36789380/

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