C++字符串文字与const字符串

Vic*_*mar 7 c++ string const literals

我知道C/C++中的字符串文字具有静态存储持续时间,这意味着它们"永远"存在,即只要程序运行.

因此,如果我有一个非常频繁调用的函数并使用字符串文字,如下所示:

void foo(int val)
{
    std::stringstream s;
    s << val;
    lbl->set_label("Value: " + s.str());
}
Run Code Online (Sandbox Code Playgroud)

set_label函数将a const std::string&作为参数.

我应该使用const std::string这里而不是字符串文字还是没有区别?

我需要尽可能减少运行时内存消耗.

编辑:

我的意思是将字符串文字与const std::string prefix("Value: ");在某种常量头文件中初始化的字符串文字进行比较.

此外,这里的连接返回一个临时的(让我们调用它,Value: 42并将一个对这个临时的const引用传递给函数set_text(),我是否正确?

再次感谢你!

Pup*_*ppy 9

您的程序每次都在相同的文字上运行.没有更有效的存储形式.将构造一个std :: string,在堆上复制,然后每次运行该函数时释放,这将是完全浪费.

  • 除非你知道OP使用了什么实现,否则你无法知道这不正是发生了什么,也不知道编译器优化不会使你的语句完全错误. (5认同)