【发布时间】:2021-01-08 12:40:35
【问题描述】:
我想返回一个字符数组,这是代码
char convert(string user){
int n = user.length();
char char_array[n+1];
strcpy(char_array,user.c_str()) ;
return char_array;
}
【问题讨论】:
-
你有什么问题?这里有一些问题,但最终你可能根本不需要这个函数。您可以使用
std::string::data()将非 constchar *获取到由字符串管理的 char 数组。 -
首先,您要返回
char*而不是char。其次,您要使用char* char_array = new char[n+1]动态分配数组,否则返回数组将导致未定义的行为。确保在需要时删除分配的数组 -
您使用的是 C++,首先您不应该使用 char 数组,除非有非常具体的充分理由这样做。该函数还应返回
char*而不是char。并且您正试图返回一个指向一个也不起作用的局部变量的指针。对于后一点,请阅读此内容以获取更多信息:stackoverflow.com/questions/6441218/… -
char char_array[n+1];is not even valid. -
是什么让你认为你首先需要一个
char数组?期望const char *的旧函数可以传递给您的my_string.c_str()结果。任何对非常量char *执行突变的函数通常都有一个已经存在的std::string类似物,它绕过了 c-stringiness。