您将需要一直使用整数,然后std::string
在最后转换为 a 。
如果您有一个支持 C++11 的编译器,这是一个可行的解决方案:
#include <string>
std::string sum(std::string const & old_total, std::string const & input) {
int const total = std::stoi(old_total);
int const addend = std::stoi(input);
return std::to_string(total + addend);
}
否则,使用boost:
#include <string>
#include <boost/lexical_cast.hpp>
std::string sum(std::string const & old_total, std::string const & input) {
int const total = boost::lexical_cast<int>(old_total);
int const addend = boost::lexical_cast<int>(input);
return boost::lexical_cast<std::string>(total + addend);
}
该函数首先将每个std::string
转换为int
(无论您采用何种方法,您都必须执行的步骤),然后添加它们,然后将其转换回std::string
. 在其他语言中,例如 PHP,尝试猜测您的意思并添加它们,无论如何,它们都是在后台执行此操作。
这两种解决方案都有许多优点。它们速度更快,它们报告错误时会出现异常,而不是默默地工作,而且它们不需要额外的中间转换。
Boost 解决方案确实需要进行一些设置工作,但绝对值得。Boost 可能是任何 C++ 开发人员工作中最重要的工具,除了编译器。您将需要它来做其他事情,因为他们已经完成了一流的工作,解决了您将来会遇到的许多问题,因此您最好开始获得它的经验。安装 Boost 所需的工作比使用它节省的时间要少得多。