【发布时间】:2016-03-02 16:06:21
【问题描述】:
我想像在java中一样简化字符串的使用。
所以我可以写"count "+6; 并得到一个字符串“count 6”
使用 std::string 可以连接两个字符串或 std::string 与 char 字符串。
我写了两个函数
template<typename T>
inline static std::string operator+(const std::string str, const T gen){
return str + std::to_string(gen);
}
template<typename T>
inline static std::string operator+(const T gen, const std::string str){
return std::to_string(gen) + str;
}
将 std::string 与数字连接,但不能写像 "count "+6; 这样的东西,因为 "count " 是 const char[] 而不是 std::string。
它适用于 std::string("count")+" is "+6+" and it works also with double "+1.234; ,但那不是很漂亮 =)
是否有可能在不从 std::string("") 开始的情况下做同样的事情
template<typename T>
inline static std::string operator+(const char* str, const T gen){
return str + std::to_string(gen);
}
这个方法不起作用,我得到一个编译器错误
error: invalid operands of types 'const char*' and 'const char [1]' to binary 'operator+'
【问题讨论】:
-
问C++,你为什么要为不同的语言添加标签? (反问,只是不要)
-
是的,我正在使用 c++,但我相信在 c 中也可以使用重载运算符,但不确定。对不起,如果没有
-
好吧,你显然不知道 C。所以只要遵守规则,不要为你不知道的语言添加标签。 (注意第一句暗示 C 不允许用户重载操作符)
-
谢谢你的信息,我会记住的
标签: c++ string c++11 concatenation