我知道C/C++中的字符串字面量具有静态存储期,这意味着它们会“永久”存在于程序运行期间。因此,如果我有一个被频繁调用并使用字符串字面量的函数如下:
void foo(int val)
{
std::stringstream s;
s << val;
lbl->set_label("Value: " + s.str());
}
在这里,set_label函数将以const std::string&
作为参数。
我应该在这里使用const std::string
而不是字符串字面量,或者它没有任何区别吗?
我需要尽可能地减少运行时内存消耗。
编辑:
我想比较字符串文字和在某种常量头文件中初始化的const std::string prefix("Value: ");
。
此外,这里的连接返回一个临时值(我们称之为Value: 42
),并且将对此临时值的const引用传递给函数set_text()
,我是正确的吗?
再次感谢!
set_label
。 - Victor Parmarstringstream
(以及stringbuf
和所有其他支持机制)比char*
和std::string
之间的差异更占用内存。 - Ben Voigt