我写了一个返回当前日期的函数。在函数内部,我“cout”结果并且它工作但是当我“cout”函数时,它不起作用。我得到了垃圾。
const char* engineCS::getDate() const
{
time_t t = time(0);
struct tm *now = localtime(&t);
char buf[20];
strftime(buf, sizeof(buf), "%Y-%m-%d %X", now);
cout << buf << endl;
return buf;
}
例如: 内线:2012-02-02 00:00:00 外面:????? fv
有什么问题? 类似的问题:Functions and return const char*
THX
编辑: 现在有什么问题?对不起,我做了太多的VB.NET ......
const char* engineCS::getDate() const
{
time_t t = time(0);
struct tm *now = localtime(&t);
char *buf;
buf = new char[20];
strftime(buf, sizeof(buf), "%Y-%m-%d %X", now);
cout << buf << endl;
return buf;
}
答案 0 :(得分:5)
将您的功能更改为返回std::string
,一切都会好的。除了返回类型之外,您不需要进行任何进一步的更改。如果消费者需要原始char const *
,请在结果字符串上调用c_str()
成员函数。