问题描述
我正在尝试从另一种语言迁移代码,该语言允许使用“+”运算符连接字符串。
//defintion
void print(std::string s) {
std::cout << s;
}
//call
print("Foo " + "Bar");
我遇到的问题是 c++ 将“Foo”和“Bar”视为 const char* 并且无法添加它们,有什么办法可以解决这个问题。我试过包含字符串库,看看它是否会自动更改它们,但这似乎不起作用。
解决方法
对于 2 个字符串文字的情况的最简单解决方案:
print("Foo " "Bar");
否则:
print(std::string("Foo ") + "Bar");
,
在 c++14 及以后:
using namespace std::literals;
print("Foo "s + "Bar");
在c++11中:
std::string operator "" _s(const char* str,std::size_t len) {
return std::string(str,len);
}
print("Foo "_s + "Bar");
或者,在所有版本中:
print(std::string("Foo ") + "Bar");