gpt4 book ai didi

c++ - 一次连接多个 C++ 字符串?

转载 作者:太空狗 更新时间:2023-10-29 19:37:49 25 4
gpt4 key购买 nike

我是 C++ 字符串的新手。有没有办法一次连接两个以上的字符串?或者我必须同时连接两个字符串?我担心的是它可能需要为每个操作分配内存,而不是只为最终结果分配一次。

记得在 java 中有类似的东西,想知道在 std 的某个地方是否有一个方法。实际上,std::stringstream 可能就是它,但我不知道它究竟是如何工作的。

最佳答案

您可以预先保留所需的空间,避免重新分配。

std::string s0{/*...*/}, s1{/*...*/}, s2{/*...*/};
std::string sink;

sink.reserve(s0.size() + s1.size() + s2.size() + 1);
sink += s0;
sink += s1;
sink += s2;

您可以使用可变参数 string_cat 函数让它变得更好。这是一个 C++17 实现:

template <typename... Strings>
std::string string_cat(Strings&&... strings)
{
std::string result;
result.reserve((strings.size() + ...) + 1);
((result += std::forward<Strings>(strings)), ...);
return result;
}

用法:

using namespace std::literals;
auto res = string_cat("a"s, "b"s, "c"s);

live example on wandbox

关于c++ - 一次连接多个 C++ 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com