C++ 如何从函数返回字符串
我想完成这个任务,它定义了特定月份的天数,对于这个任务,我使用日期和时间库获取当前月份,然后我想检查当前月份的天数 我得到了这个错误: 没有合适的构造函数将“char”转换为 “std::basic_字符串, std::分配器>”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]; 国际日;
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];
}
}
}