微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决有什么方法可以告诉 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");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。