gpt4 book ai didi

c++ - 构造用于追加的字符串

转载 作者:行者123 更新时间:2023-11-30 03:31:17 24 4
gpt4 key购买 nike

我必须通过连接其他几个字符串来构造一个字符串。我也知道字符串的最大大小,我想保留容量以便不进行重新分配。我的代码现在看起来像这样:

#include <string>
using std::string;

// Setup
...

string a,b,c;

// Strings are filled with relevant data
...

string msg;
msg.reserve(200);
msg = "A="; msg += a; msg += ',';
msg += "B="; msg += b; msg += ',';
msg += "C="; msg += c; msg += '.';

我以前为此使用过 stringstream,但性能慢了一倍。有没有办法在构造时保留字符串容量,而不必分配两次内存?还有更好(更快)的附加字符串的方法吗?

最佳答案

Is there a way to reserve the string capacity at construction instead of having to allocate memory twice?

这里没有“两次分配内存”。您正确地创建了一个字符串,然后要求它保留一些内存。除了预留更准确的数量(而不是仅仅猜测 200),你没问题。

技术上,an implementation is allowed to start off with an unspecified capacity ,但您可能会看到小字符串优化的结果(std::string 本身内部的静态分配缓冲区,以避免在某些情况下进行动态分配),而不是此功能用过。

如果你真的担心它,你可以用 200 个 \0 字符实例化字符串,然后将它们全部删除;那么它的底层容量将是一致的。

关于c++ - 构造用于追加的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304146/

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