c++ - 原语的二元运算符重载字符串类

标签 c++ string operator-overloading string-concatenation

我有一个关于 std::string 类的简单问题。

为什么不为原语重载 + 以便可以轻松连接字符串?

例如-如果我有双

double d = 1000.5:

还有一个字符串

std::string s = "my value is ";

我想以一种简单的方式将这个字符串与 double 连接起来

s = s + d;

结果应该是:

my value is 1000.5

这很容易用 Java 等语言实现

public static void main (String[] args) {
    double d = 1000.5;
    String s = "my Value is ";
    s += d;
    System.out.println(s);
}

相反,这是一个如何在 C++ 中执行此操作的示例

int main() {
   double d = 1000.5;
   std::ostringstream strs;
   strs << d;
   std::string s = "My value is " + strs.str();
   cout << s;

   return 0;
}

它并不复杂,但如果允许以“java 方式”进行串联,它会简单得多。

最佳答案

您可以轻松实现它。

template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value>::type>
std::string& operator += (std::string& string, const T& number)
{
    return string += std::to_string(number);
} 

关于c++ - 原语的二元运算符重载字符串类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232506/

相关文章:

c++ - 如何实例化成员函数指针?

c++ - 如何在 MFC 中使用 CfileDialog 选择特定文件

c++ - 放置在外部 DLL 中的类中 wstring 数据的内存损坏

algorithm - 查找字符串重叠的有效算法

rust - 如何将 Arc<T> 与 T 进行比较?

c++ - operator() 重载结构

c++ - GDI+:绘制位图时出现未处理的异常

c++ - 通用引用模板类型总是评估为左值

ruby - 在 ruby​​ 中获取字符串的前半部分

c++ - 重载后缀增量运算符