构建琴弦以添加

Constructing strings for appending

本文关键字:添加 构建      更新时间:2023-10-16

我必须通过连接其他一些字符串来构造字符串。我也知道字符串的最大尺寸,我想保留容量,因此没有重新分离。我的代码现在看起来像这样:

#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 += '.';

i先前为此使用了stringstream,但性能是慢的两倍。有没有办法保留施工时的弦乐能力,而不必两次分配内存?还有一个更好(更快(附加字符串的方法吗?

是否有一种方法可以保留施工时的字符串能力,而不必两次分配内存?

这里没有"两次分配内存"。您正确创建一个字符串,然后要求它保留一些内存。除了保留更准确的数量(而不是猜测200(,您还可以。

从技术上讲,实现允许以未指定的容量开始,但是您可能会看到小弦优化的结果(std::string本身内的静态分配缓冲液,在某些情况下避免动态分配(而不是使用此功能。

如果您真的很担心它,则可以用200个字符实例化字符串,然后将它们全部删除;然后其基础能力将是一致的。