在构造函数的初始化列表中将 c-style-string 转换为 std::string
convert c-style-sting to std::string inside initialization list of a constructor
在构造函数的初始化列表中将 char*
转换为 std::string
是否安全:
class MyClass{
public:
MyClass(){}
MyClass(
char*char_Ptr_Definition_File
,char*char_Ptr_Parameters_File
,char*char_Ptr_Response_File
,char*char_Ptr_Work_Dir
)
:
m_string_Definition_File(std::string(char_Ptr_Definition_File))
,m_string_Parameters_File(std::string(char_Ptr_Parameters_File))
,m_string_Response_File(std::string(char_Ptr_Response_File))
,m_string_Work_Dir(std::string(char_Ptr_Work_Dir))
{
}
private:
std::string m_string_Definition_File;
std::string m_string_Parameters_File;
std::string m_string_Response_File;
std::string m_string_Work_Dir;
};
只要 char*
指向以 null 结尾的字符串就是安全的。你不需要那么冗长。这样就好了:
m_string_Definition_File(char_Ptr_Definition_File)
您也可以选择防止空指针,例如将字符串设置为空:
m_string_Definition_File(char_Ptr_Definition_File ?
char_Ptr_Definition_File :
"")
等等。但这通常适用于从 char*
初始化字符串。
是的,假设 char*
字符串以 null 结尾。
http://www.cplusplus.com/reference/string/string/string/
link中列出的第四个构造函数采用const char*
,并且“复制指向的空终止字符序列(C字符串) s".
因此,一旦 std::string
从 char*
初始化,可以在不影响另一个的情况下修改或销毁其中一个。
在构造函数的初始化列表中将 char*
转换为 std::string
是否安全:
class MyClass{
public:
MyClass(){}
MyClass(
char*char_Ptr_Definition_File
,char*char_Ptr_Parameters_File
,char*char_Ptr_Response_File
,char*char_Ptr_Work_Dir
)
:
m_string_Definition_File(std::string(char_Ptr_Definition_File))
,m_string_Parameters_File(std::string(char_Ptr_Parameters_File))
,m_string_Response_File(std::string(char_Ptr_Response_File))
,m_string_Work_Dir(std::string(char_Ptr_Work_Dir))
{
}
private:
std::string m_string_Definition_File;
std::string m_string_Parameters_File;
std::string m_string_Response_File;
std::string m_string_Work_Dir;
};
只要 char*
指向以 null 结尾的字符串就是安全的。你不需要那么冗长。这样就好了:
m_string_Definition_File(char_Ptr_Definition_File)
您也可以选择防止空指针,例如将字符串设置为空:
m_string_Definition_File(char_Ptr_Definition_File ?
char_Ptr_Definition_File :
"")
等等。但这通常适用于从 char*
初始化字符串。
是的,假设 char*
字符串以 null 结尾。
http://www.cplusplus.com/reference/string/string/string/
link中列出的第四个构造函数采用const char*
,并且“复制指向的空终止字符序列(C字符串) s".
因此,一旦 std::string
从 char*
初始化,可以在不影响另一个的情况下修改或销毁其中一个。