首页 > 解决方案 > 将字符串文字传递给期望字符串的函数

问题描述

让我们假设我有一个函数,它期望参数是一个字符串(非 const)。但正如我们所知,字符串文字本质上是 const 。有什么方法可以将字符串文字传递给期望非常量的函数。我知道这会导致错误,因为文字本质上是 const,但函数需要非 const。任何方式来转换这个函数都可以工作。听说有 const_cast 。我可以用吗?

   void str(string &s); // my function which is expecting a non const string
   // main . i want to do something like this 
   str("Blah"); // error

  void str(string s) // it works fine ? why ?

标签: c++stringfunctionconstants

解决方案


您不能将临时值传递给接受非常量引用的函数。临时死了,你有一个悬空的参考,如果它甚至编译。

但是,如果您使用 const 引用,则临时对象的生命周期将延长到函数结束。


推荐阅读