如何从函数返回字符串

时间:2017-05-07 16:36:32

标签: c++

我想完成任务,定义特定月份的天数,对于此任务,我使用日期和时间库来获取当月,然后我想检查当月的天数。

我收到此错误:

  

没有合适的构造函数可以转换为" char"至   "的std :: basic_string的,   的std ::分配器>"

string daysInMonth(int month, string months);
time_t tt = system_clock::to_time_t(system_clock::now());
    struct tm * ptm = localtime(&tt);
    char buff[100];

    int days;
    string months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int month =  ptm->tm_mon+1;


    switch (month)
    {
        case May: {
            days = 31;
            cout << daysInMonth(month, months);

    }
    }

string daysInMonth(int month, string months) {
    for (int i = 0; i < sizeof(months) / sizeof(months[0]); i++)
    {
        if (month == i)
        {
            return months[i - 1];

        }
    }
}

1 个答案:

答案 0 :(得分:5)

当您声明函数daysInMonth时,您告诉编译器months参数是单个字符串,因此它认为months[i - 1]将计算为字符串中的单个字符。

要解决此问题,请将daysInMonth的声明更改为 string daysInMonth(int month, string months[12])