【发布时间】:2016-09-29 16:16:52
【问题描述】:
我正在尝试从这样的函数返回一个字符串:
virtual const char* what() const throw()
{
std::string str = "Name Error: name ";
str+= n_name;
str += " is not defined";
char ret[256]="";
const char* temp = str.c_str();
strcpy(ret, temp);
return ret;
}
但是当我尝试在另一个地方打印它时:
const char* str= exc.what();
std::cout << str;
输出是垃圾。
我以为问题是char[],应该是char*,但是当我把它改成
char* ret="";
程序崩溃了
strcpy(ret, temp);
有人可以帮帮我吗? 附:该函数必须返回一个 const char*
【问题讨论】:
-
你返回一个指向无效内存的指针。您需要分配一些您的指针将指向的内存。参见“malloc”或“new[]”。
标签: c++ string char return strcpy