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 中实际上都没有定义“字符串”、“生日”、“这个”、“日”、“月”和“年”。day
、month
和year
的类型有哪些?
另外,这是我第一次看到有人在 ->
的操作数之间放置空格。
【参考方案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++字符串函数返回语句的主要内容,如果未能解决你的问题,请参考以下文章