它可能很简单,但我对 c++ 很陌生
在 char 数组中,我们可以让编译器计算字符串中的字符数,例如
char myarray[]="stringvar";
没关系,但是如果我按如下方式更改代码,编译器会给出错误
string myvar = "stringvar";
char myarray[] =myvar;
error: initializer fails to determine size of myarray
这是为什么?
你可以这样做:
string myvar = "stringvar";
const char * myarray = myvar.c_str(); //immutable string
在这种情况下,数据myarray
指向,生命与生命一样长myvar
.
但是,如果您想要一个mutablestring 或者,一个可能比其生命周期更长(或更短)的字符串myvar
,那么你必须自己分配内存:
char * myarray = new char[myvar.size()+1]; //mutable string
std::strcpy(myarray, myvar.c_str());
//you've to deallocate the memory yourself as:
delete [] myarray;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)