【问题标题】:C++: passing a string-literal of Type const char* to a string-parameterC++:将 const char* 类型的字符串文字传递给字符串参数
【发布时间】:2012-08-30 00:20:04
【问题描述】:

我是 C++ 新手,不明白为什么这段代码运行良好:

string GetString(string promt)
{
    cout << promt << ": ";
    string temp;
    getline(cin, temp); 
    return temp; 
}

int main()
{
    string firstName = GetString("Enter your first name"); 
    string lastName = GetString("Enter your last name");

    cout<< "Your Name is: " << firstName << " " << lastName; 


    cin.ignore(); 
    cin.get(); 

    return 0;
}

像“bla”这样的字符串文字属于 const char* 类型。至少 auto i = "bla";表示 i 的类型为“const char*”。为什么可以将它传递给 GetString-Function,因为该函数需要一个字符串而不是 const char*?

【问题讨论】:

  • 字符串字面量的类型为const char(&amp;)[N],但由于C 不能将数组复制到局部变量,auto 无论如何都会生成局部const char*

标签: c++ string const-char


【解决方案1】:

std::string 有一个converting constructor,它接受一个char const* 并用指针指向的空终止字符串初始化字符串。这个构造函数不是explicit,所以可以在隐式转换中使用。

【讨论】:

    【解决方案2】:

    查看 std::string 构造函数。 发生的事情是编译器找到了一个接受您的 const char* 的构造函数,并使用它自动将 const char* 转换为 std::string。 顺便说一句,我建议改用const std::string&amp; prompt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2014-03-19
      • 1970-01-01
      相关资源
      最近更新 更多