我是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 *?
答案 0 :(得分:8)
std::string
有converting constructor,它接受char const*
并使用指针指向的空终止字符串初始化字符串。此构造函数不是explicit
,因此可以在隐式转换中使用。
答案 1 :(得分:1)
查看std :: string构造函数。
发生的事情是编译器找到了一个构造函数,它接受你的const char *并用它来自动将const char *转换为std :: string。
顺便说一句,我建议改用const std::string& prompt
。