如何将整数作为字符串

时间:2015-05-07 12:26:42

标签: c string int

我正在尝试返回一个字符串,即年份。

此代码不在我的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”作为“字符串”......

1 个答案:

答案 0 :(得分:1)

撇开任何其他问题,您的代码至少会产生undefined behaviour

getYear()函数中,您尝试返回局部变量buf的地址。这是不可能的。

相反,你可以

  • buf定义为char指针。
  • 使用malloc() / calloc()
  • 分配内存dyncamiccly
  • 使用并从buf
  • 返回getYear()
  • 使用调用者中返回的指针。

也就是说,如果我正确理解了您的问题,您可以使用strtol()字符串转换为int。您还需要更改功能签名。

编辑:

好的,关于转换部分,我说错了,你想要的是将int转换为字符串。你最好的选择是sprintf()