我想返回一个字符数组,下面是代码
char convert(string user){
int n = user.length();
char char_array[n+1];
strcpy(char_array,user.c_str()) ;
return char_array;
}发布于 2020-09-22 19:50:38
不能从函数返回数组。您可以返回指向此类数组的第一个元素的指针。好消息是:这个函数已经存在了。它就是std::string::c_str方法。
void foo(const char*); // <- legacy, cannot modify, must pass c-string
std::string x{"Hello World"};
foo( x.c_str() );在您的代码中,此char char_array[n+1];不是有效的标准C++。详情请看这里:Why aren't variable-length arrays part of the C++ standard?
此外,您尝试返回一个指向本地数组的指针。一旦函数结束,数组的生存期就已经过去,指针就没有用处了。更多信息请点击这里:Can a local variable's memory be accessed outside its scope?
最后(也是最不重要的),当您需要一个char时,您声明函数返回一个char*。然而,由于最后一点的原因,修复它并不会真正有帮助。
https://stackoverflow.com/questions/64008868
复制相似问题