C++:将const char*类型的字符串文本传递给字符串参数
C++: passing a string-literal of Type const char* to a string-parameter
我是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
。
相关文章:
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 在编译时检查字符串文本的长度
- 读取字符串文本输入以创建 2D 矢量
- 管理字符串文本的最佳做法
- 定义宏以将前缀 0x 添加到十六进制字符串文本
- 无法在模板参数中定义字符串文本
- 不推荐使用 PTCHAR 的字符串文本
- C++ 字符串文本和常量
- C++20字符串文本模板参数工作示例
- 返回从字符串文本创建的静态string_view是否安全?
- 在处理任何字符大小的模板中使用字符串文本
- 是否保证相同内容字符串文本的存储相同?
- 将以 null 结尾的字节字符串转换为原始字符串文本
- 是否可以创建一个用户定义的文本,将字符串文本转换为 own 类型的数组?
- 使用C++中的模板检测不同的字符串文本
- 无法完全专用化字符串文本的模板
- C++ - 确定 const char* 是指向字符串文本对象还是动态对象
- 是否可以在原始字符串文本中插入转义序列?
- C++带有捕获组的正则表达式字符串文本
- 为什么多维数组中的空字符串文本衰减为空指针?