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

时间:2012-08-30 00:20:05

标签: c++ string const-char

我是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;
}

String-Literals如“bla”属于const char char *。至少auto i =“bla”;表示我是Type“const char *”。为什么可以将它传递给GetString-Function,因为函数需要一个字符串而不是一个const char *?

2 个答案:

答案 0 :(得分:8)

std::stringconverting constructor,它接受​​char const*并使用指针指向的空终止字符串初始化字符串。此构造函数不是explicit,因此可以在隐式转换中使用。

答案 1 :(得分:1)

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