C++ 在C+;中初始化字符*的非弃用方法是什么+;?

C++ 在C+;中初始化字符*的非弃用方法是什么+;?,c++,C++,当我初始化一个本地char*变量时,就像在C++中那样: char * pattern = "oggS"; 编译器警告我: Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’ 什么是在C++中不被禁止的方式?< /P> 如果这很重要,下面是我调用编译器的方式(从): 你想要: const char * pattern = "oggS"; 或者,如果您打算稍后更改字符串中的字符: char pa

当我初始化一个本地
char*
变量时,就像在C++中那样:

char * pattern = "oggS";
编译器警告我:

Foo.cpp:34: warning: deprecated conversion from string constant to ‘char*’
什么是在C++中不被禁止的方式?< /P> 如果这很重要,下面是我调用编译器的方式(从):

你想要:

const char * pattern = "oggS";
或者,如果您打算稍后更改字符串中的字符:

char pattern[] = "oggS";

第一个方法创建指向const char的指针,该指针指向字符串文本。您不能通过此指针更改文本,这很好,因为更改文本会导致未定义的行为。第二个创建一个包含5个字符的数组,并用“oggS”对其进行初始化。结果不是字符串文字,只是一个普通数组,因此您可以更改它包含的字符。

哇,我的C显然已经生锈了!假设你是瑞典人,塔克·斯米克特!)还有:考虑使用<代码> STD::String 。@ BOBOBOBO:这个评论不是很有建设性。如果你没有任何有效的理由不使用<代码> STD::String ,那么请陈述它们。它代表了一些C++程序员的位置,他们坚持使用<代码> char */COD>字符串,没有任何推理真的可以读取编译器警告。1,注意这个警告不是在MSVC++中发布的,但可能是应该的!
char pattern[] = "oggS";