5

我是 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*?

4

2 回答 2

8

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

于 2012-08-30T00:21:34.413 回答
1

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

于 2012-08-30T00:22:43.520 回答