当我char *在C++中初始化这样的局部变量时:
char * pattern = "oggS";
Run Code Online (Sandbox Code Playgroud)
编译器警告我:
Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’
Run Code Online (Sandbox Code Playgroud)
在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"
Run Code Online (Sandbox Code Playgroud)
小智 26
你要:
const char * pattern = "oggS";
Run Code Online (Sandbox Code Playgroud)
或者,如果您打算稍后更改字符串中的字符:
char pattern[] = "oggS";
Run Code Online (Sandbox Code Playgroud)
第一个创建指向const-char的指针,指向字符串文字.您无法通过此指针更改文字,这很好,因为更改文字会为您提供未定义的行为.第二个创建一个包含5个字符的数组,并使用"oggS"对其进行初始化.结果不是字符串文字,只是一个普通的数组,因此您可以更改它包含的字符.