gpt4 book ai didi

c++ - 我应该预先分配 std::stringstream 吗?

转载 作者:IT老高 更新时间:2023-10-28 21:53:18 28 4
gpt4 key购买 nike

我广泛使用 std::stringstream 在我的应用程序中构造字符串和错误消息。 stringstreams 通常是生命周期很短的自动变量。

这样的使用会导致每个变量的堆重新分配吗?我应该从临时变量切换到类成员 stringstream 变量吗?

在后一种情况下,如何保留 stringstream 缓冲区? (我应该用足够大的字符串初始化它还是有更优雅的方法?)

最佳答案

您是否分析过您的执行情况,并发现它们是导致减速的原因?

考虑它们的用法。它们主要用于代码正常流程之外的错误消息吗?

至于预留空间...

某些实现可能会在对字符串流进行任何分配之前保留一个小缓冲区。 std::string 的许多实现都是这样做的。

另一个选项可能是(未经测试!)

std::string str;
str.reserve(50);
std::stringstream sstr(str);

您可能会在此 gamedev thread 中找到更多想法.

编辑:

玩弄stringstream's rdbuf也可能是一个解决方案。这种方法可能很容易出错,所以请be sure it's absolutely necessary .绝对不优雅或简洁。

关于c++ - 我应该预先分配 std::stringstream 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941064/

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