C++:将const char*类型的字符串文本传递给字符串参数

C++: passing a string-literal of Type const char* to a string-parameter

本文关键字:字符串 文本 参数 类型 const char C++      更新时间:2023-10-16

我是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函数,因为该函数需要一个字符串而不是const char*?

std::string有一个转换构造函数,它接受一个char const*,并用指针指向的以null结尾的字符串初始化字符串。此构造函数不是explicit,因此可以在隐式转换中使用。

查看std::string构造函数。实际情况是,编译器找到了一个接受constchar*的构造函数,并使用它将constchar*自动转换为std::string。顺便说一句,我建议使用const std::string& prompt