试图Cout返回一个函数

时间:2013-05-20 18:32:32

标签: c++

我是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);
什么都没有出现。我做错了什么?

2 个答案:

答案 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,这就是您输出空的原因。