当我在C ++中初始化一个本地char *
变量时:
char * pattern = "oggS";
编译器警告我:
Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’
在C ++中执行此操作的不推荐方法是什么?
如果重要,这就是我如何调用编译器(来自Eclipse):
g++-4.5 -O0 -g3 -Wall -std=c++0x -c -fmessage-length=0 -MMD -MP -MF"Foo.d" -MT"Foo.d" -o"Foo.o" "Foo.cpp"
答案 0 :(得分:26)
你想:
const char * pattern = "oggS";
或者如果您打算稍后更改字符串中的字符:
char pattern[] = "oggS";
第一个创建指向const-char的指针,指向字符串文字。您无法通过此指针更改文字,这很好,因为更改文字会为您提供未定义的行为。第二个创建一个包含5个字符的数组,并使用“oggS”对其进行初始化。结果不是字符串文字,只是一个普通的数组,所以你可以改变它包含的字符。