C++字符串函数返回语句

Posted

技术标签:

【中文标题】C++字符串函数返回语句【英文标题】:C++ string function return statement 【发布时间】:2013-04-25 12:26:23 【问题描述】:

我正在尝试在 return 语句中将 int 添加到字符串,如下所示:

string Birthday::asString() 
    return this -> day + "/" + this -> month + "/" + this -> year;

并得到以下错误:

错误:表达式必须具有整数或无范围枚举类型

我对 C++ 有点陌生。

【问题讨论】:

sscce.org。或者,换句话说:您发布的代码 sn-p 中实际上都没有定义“字符串”、“生日”、“这个”、“日”、“月”和“年”。 daymonthyear的类型有哪些? 另外,这是我第一次看到有人在 -> 的操作数之间放置空格。 【参考方案1】:

最简单的方法是使用 ostringstream(在标头 <sstream> 中找到):

string Birthday::asString() 
    std::ostringstream out;
    out << this -> day << "/" << this -> month << "/" << this -> year;
    return out.str();

您收到显示的错误是因为C++ 不知道如何将整数添加到字符串中。

编辑:正如 M M. 自 C++11 以来的回答中所建议的那样,还有另一种选择,即使用函数 std::to_string。

【讨论】:

有没有办法在不创建对象的情况下做到这一点?我认为这是一种更好的做法 @user1970719 您需要将整数转换为字符串,因此您需要创建一个新对象。 @user1970719:对象是 ostringstream 实例?实际上 ostringstream 方案在性能方面比std::to_string 方案要优越。 不,最简单的方法是使用std::to_string。是的,它是 C++11,但这是当前标准(因此也是默认标准),因此您可能应该提到您的解决方案适用于较旧的 C++03。 @syam 虽然我同意我必须提到这个替代方案(我已经在编辑中提到过)我仍然认为我的建议在这种情况下更容易阅读和写作。【参考方案2】:

你可以使用std::to_string:

string Birthday::asString() 
     return std::to_string(this->day) + "/" +
            std::to_string(this->month) + "/" +
            std::to_string(this->year);

自 C++11 起可用

【讨论】:

它也可用于非 c++11 MSVC10 它缺少一些 C++11 重载,可能需要一些强制转换。

以上是关于C++字符串函数返回语句的主要内容,如果未能解决你的问题,请参考以下文章

Python函数返回字符串,即函数名,需要执行返回的语句

从 C++ 函数返回一个字符串

让函数返回字符串而不是整数是否很糟糕? (C++)

C++ 函数返回字符串

C++ 函数返回一个向量/字符串,但不是一个数组

C++:声明一个在头文件中返回字符串的函数?