我是C ++的新手,我遇到了这段代码的问题:
string output_date(int day, int month, int year){
string date;
if ((day > 0 && day <= 30) && (month > 0 && month <= 12) && (year >= 2013)){
switch (month){
case 1: date = day + " JAN " + year; break;
case 2: date = day + " FEB " + year; break;
case 3: date = day + " MAR " + year; break;
case 4: date = day + " APR " + year; break;
case 5: date = day + " MAY " + year; break;
case 6: date = day + " JUN " + year; break;
case 7: date = day + " JUL " + year; break;
case 8: date = day + " AUG " + year; break;
case 9: date = day + " SEP " + year; break;
case 10: date = day + " OCT " + year; break;
case 11: date = day + " NOV " + year; break;
case 12: date = day + " DEC " + year; break;
}
}
return date;
}
当我尝试做的时候:
cout << output_date(22,12,2013);
什么都没有出现。我做错了什么?
答案 0 :(得分:5)
我建议使用stringstream并从流中返回一个字符串:
stringstream date;
if ((day > 0 && day <= 30) && (month > 0 && month <= 12) && (year >= 2013)){
switch (month){
case 1: date << day << " JAN " << year; break;
case 2: date << day << " FEB " << year; break;
//yadda yadda.....
}
}
return date.str();
为此您需要包含标题<sstream>
答案 1 :(得分:0)
你做错的第一件事就是不使用调试器。
你做错的第二件事是将整数添加到字符串文字中。例如," DEC "
是一个字符串文字,其指针类型为char const *
。表达结果
day + " DEC " + year
是指向未知内存区域的char const *
指针。在你的情况下,这个未知区域用零填充,这就是你得到char const *
类型的空字符串的原因。 (这也是我的情况,当我在调试器中运行你的程序时)
您将此空字符串分配给data
,这就是您输出空的原因。