【发布时间】:2011-12-05 01:08:42
【问题描述】:
如果输入的 const 字符串以某种方式被修改(导致 C 编译器警告),处理它的最佳方法是什么 - 将其类型转换为新变量然后使用它或复制它并使用它然后释放它。或者有没有其他方法来处理这种情况。请建议。任何帮助将不胜感激。
//类型转换
const char * s1;
char * s2 = (char *)s1;
//复制和免费
const char * s1;
char * s2 = strdup( s1 );
free(s2)
编辑:它是一个 C 编译器;不是 C++。我不确定在类型转换中,s2 是字符串 s1 的新副本还是指向原始字符串 s1?
感谢您的回答。我还有一个疑问-
const char * c1;
const char * c2 = c1;
上述分配有效吗?
【问题讨论】:
-
这取决于您需要修改 const 字符串的原因的详细信息。