【发布时间】:2021-03-16 04:45:21
【问题描述】:
我正在尝试这段代码,我发现它运行良好。但这是将字符串转换为 char* 的正确方法吗?
char* s1= "hello"; string s1 = (char*)s2.c_str();
这行是什么意思:将地址存储到临时字符串对象的内部存储是错误的。
【问题讨论】:
-
char* s1= "hello";也是错误的。在 C++ 中,所有文字字符串实际上都是 constant 字符数组(包括字符串空终止符)。你需要一个const char*(或char const*,完全相同)。 -
另外,
c_str中的c用于常量。该函数返回一个const char*。 -
哦,如果你觉得需要在 C++ 中使用 C 风格的转换(就像你使用
(char*)s2.c_str()所做的那样),那么你应该把它当作你做错了什么的标志。跨度> -
是的。找到代码中神秘错误的最简单方法之一是寻找过于广泛的演员表。