如何解决有什么方法可以告诉 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");
,
在 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");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。