如何在 std::string 和 Aws::String 之间转换?

How to convert between a std::string and an Aws::String?

尝试使用以下代码将 std::string 转换为 Aws::String 时:

std::string s("Johnny is cool");
Aws::String aws_s(s);

我收到以下错误:

error: no matching function for call to ‘std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >::basic_string(const string&)’

来自 https://github.com/aws/aws-sdk-cpp/issues/416. Thanks Bu11etmagnet!


如果您有 std::string 要传递给 Aws 函数,请从中构造一个 Aws::String

std::string s{"whatever"};
Aws::String aws_s(s.c_str(), s.size());
Aws::SomeFunction(aws_s);

如果您从 Aws 函数中得到一个 Aws::String,请从中构造一个 std::string:

Aws::String const& aws_s = Aws::SomeFunction();
std::string s(aws_s.c_str(), aws_s.size());

不幸的是,这两个都执行了字符串内容的复制。

Aws::String aws_s(std_string.c_str()) 将使用 strlen() 测量字符串长度,该信息已包含在 std::string 对象中。