我正在尝试返回一个字符串,即年份。
此代码不在我的GUI层附近,因此我正在尝试以下
#define COMPANY_COPYRIGHT "Copyright © " + getYear() + ";
当它被召唤时我有
void getCopyRight(BSTR* copyRight)
{
CString CopyRightStr = (CString)COMPANY_COPYRIGHT;
}
我正在努力学习我的getYear()函数
#include <time.h>
const char getYear()
{
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
int year = timeinfo->tm_year + 1900;
char buf[8]; //I think 8 as I expect only 4 characters, each is 2 bit
sprintf(buf,"%d", year); //I can see year shows 2015. But not sure why it's %d because this should be the output format, surely it should be %s but this errors
return buf; //I can see buf shows 2015
}
以上错误
'return' : cannot convert from 'char[4] to 'const char'
我理解错误消息但不知道该怎么做。如果我添加一个演员,比如
return (const char)buf; //I can see buf shows 2015
然后它似乎返回一个ASCII字符,这不是我想要的。
我想要的只是,它不是将2015作为int返回,而只返回值“2015”作为“字符串”......
答案 0 :(得分:1)
撇开任何其他问题,您的代码至少会产生undefined behaviour。
在getYear()
函数中,您尝试返回局部变量buf
的地址。这是不可能的。
相反,你可以
buf
定义为char
指针。malloc()
/ calloc()
buf
getYear()
也就是说,如果我正确理解了您的问题,您可以使用 strtol()
将字符串转换为int
。您还需要更改功能签名。
编辑:
好的,关于转换部分,我说错了,你想要的是将int
转换为字符串。你最好的选择是sprintf()