有什么方法可以告诉 C++11 使用 std::string 而不是 const char* 吗?

问题描述

我正在尝试从另一种语言迁移代码,该语言允许使用“+”运算符连接字符串。

//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");
,

及以后:

using namespace std::literals;
print("Foo "s + "Bar");

中:

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");