【发布时间】:2012-04-14 12:01:55
【问题描述】:
我的程序中有这个功能
const char* Graph::toChar() {
std::string str;
const char* toret;
str = "";
for (vector<Edge*>::iterator it = pile.begin(); it != pile.end(); it++) {
str += (*it)->toString();
}
toret = str.c_str();
return toret;
}
然后我正在调试函数一切正常,直到我进入 return toret; 行。我按下 step over ,调试器将转到 std::string str; 行,所有字符串和字符变量都变为 "",所以函数的最终返回是 ""(什么都没有)。
我做错了什么?
*(it)->toString(); 工作正常,当调试器执行 *toret = str.c_str();* toret 中的值为正确。
谢谢
【问题讨论】:
-
你为什么返回
char const*而不是一个字符串? -
string::c_str query 的可能重复项