无法将 const char 转换为构造字符串的字符串 [重复]

Posted

技术标签:

【中文标题】无法将 const char 转换为构造字符串的字符串 [重复]【英文标题】:Cannot convert const char to string constructing string [duplicate] 【发布时间】:2018-02-17 06:13:05 【问题描述】:

为什么会这样

auto f = std::string();
f = "src.Id";

但这不是

std::string f();
f = "src.Id";

【问题讨论】:

在 C++ 中查找“最令人头疼的解析”。 我希望人们不要把这个简单的案例称为最令人头疼的解析。这是最烦人的解析en.wikipedia.org/wiki/Most_vexing_parse。 可以说,您目前遇到的任何令人头疼的解析都是最令人头疼的解析。 :) 如果您使用较新的语法std::string f;,它不会将f 视为返回std::string 的函数的声明。 @john:也许你应该纠正 Scott Meyers(这个词的发明者)——参见他的评论 “Widget w3(); // 最令人头疼的解析!声明一个函数!”here。仅仅因为 WIkipedia 仅列出了一个更复杂的示例,并不意味着该术语也不涵盖更简单的示例。 【参考方案1】:

因为

std::string f();

声明一个函数f,它不接受任何参数并返回一个字符串。它通常(但被错误地)称为最令人头疼的解析。

【讨论】:

托尼·德尔罗伊是对的。

以上是关于无法将 const char 转换为构造字符串的字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法将字符串转换为 const char/string* 到 int*

无法从“const char *”转换为“LPCTSTR”

将字符串转换为 const char* 问题 [重复]

将 Swift 字符串数组转换为 const char * const *

error C2440: “=”: 无法从“const char [18]”转换为“LPCWSTR”

error C2440: “=”: 无法从“const char [18]”转换为“LPCWSTR”