C ++ const char *转换为std :: string&

米歇尔·费恩斯坦

我有一个可编译的代码,它看起来像:

    void test1(const std::string &name)................
    test1("myName");

但是,如果我将const声明中的删除为:

    void test2(std::string &name)................
    test2("myName");

该代码只是不编译。

为什么要const std::string编译?据我了解,相同的隐式构造函数将被调用char *以将转换为std::string

我正在使用Visual Studio 2013,以防可能与答案有关。

迪特里希·埃普

当隐式转换发生时,您会得到一个临时值 std::string(从技术上来说,重要的是它是一个xvalue)。您不能将临时绑定到左值引用,std::string &但可以绑定到const左值引用const std::string &或右值引用std::string &&

同样的事情在这里发生:

const int &x = 5;
int &x = 5; // error

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将 const char& 转换为 const std::string&?

从类方法返回“ const char *”作为std :: string&

C ++错误:无法将'std :: basic_string <char>'转换为'const char *'

如何将std :: string转换为const char *或char *?

将char *转换为string&

std :: string强制转换为const char *在std :: unordered_set <const char *>中找不到

将 const char 转换为 std::string 作为标题

在C ++中将char *转换为const char *

一个关于c++语法的问题[static const auto compare = [](const std::string& now, const std::string& next) noexcept ->bool ]

无名char []到std :: string&引用

如何在C ++中将vector <string>转换为const char * const *?

在C ++中将wstring转换为const * char

错误:无法将'std :: basic_string <char> :: iterator ...'转换为'const char * for parameter'1'...'

如何将“ std :: vector <std :: string>”转换为“ const char * array”?

将const char **转换为std :: vector <const char *>

在C ++ 17中使用const std :: string&参数是否有意义?

C++ 将 std::string 转换为 char

错误:请求从“const char”转换为非标量类型“std::string”{aka 'std::__cxx11::basic_string<char>'}

std :: string转换为char *

C++ 不使用 std::from_chars 将 counted char const * data 转换为 double

如何在C中将const char *转换为char *?

C2440:“ =”:无法从“ const char [9]”转换为“ char *”

如何在C中将char *转换为char * const *

如何将std :: string_view转换为const char *?

为什么将const char *强制转换为std :: string起作用?

为什么const char *隐式转换为bool而不是std :: string?

字符串自动将const char *转换为std :: string

来自'std :: string(*)(std :: ofstream&,const string&,std :: string,int的无效转换

C ++不存在从“ std :: string”到“ const char *”的合适转换函数