C++ 如何从函数返回字符串

C++ 如何从函数返回字符串,c++,C++,我想完成这个任务,它定义了特定月份的天数,对于这个任务,我使用日期和时间库获取当前月份,然后我想检查当前月份的天数 我得到了这个错误: 没有合适的构造函数将“char”转换为 “std::basic_字符串, std::分配器>” string daysInMonth(整数月,字符串月); time_t tt=system_clock::to_time_t(system_clock::now()); struct tm*ptm=localtime(&tt); 字符buff[100]; 国际日;

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

我得到了这个错误:

没有合适的构造函数将“char”转换为 “std::basic_字符串, std::分配器>”

string daysInMonth(整数月,字符串月);
time_t tt=system_clock::to_time_t(system_clock::now());
struct tm*ptm=localtime(&tt);
字符buff[100];
国际日;
字符串月份[12]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
整月=ptm->tm\U mon+1;
开关(月)
{
案件可能:{
天数=31天;

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

要解决此问题,请将
daysInMonth
的声明更改为


字符串daysInMonth(整数月,字符串月[12])

谢谢,这解决了问题,但现在它的结果是:在Basic_1.exe中的0x000D59FB处引发异常:0xC0000005:访问冲突读取位置0xCCCC0。我猜您的崩溃发生在您的问题中没有的代码中。既然这个问题得到了回答,您应该编写一个简短完整的示例来演示错误和错误问另一个问题。这个完整的例子很有效:注意,我简化了daysInMonth函数。因为我们不能按原样编译你的例子,我们当然看不到所有的代码。@Coolgoy哇,OP实际上修改了他的问题,因为你发表了评论,这误导了我。请忽略我之前的评论。请不要修改你的问题如果你有一个不同的问题,问一个不同的问题。你应该读一读:并且考虑使用一个STD::向量或一个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];

        }
    }
}