字符数组转字符串并复制字符\0
Char array to string and copy character \0
如果我在某个位置存储了 '\0' 字符,如何将 char 字段转换为字符串。例如,如果我有“ab\0bb”,a.lenght()命令会告诉我我只存储了两个字符
string getString(char *str, int len)
{
str[len] = '[=10=]';
string strBuffer = string(str);
cout << strBuffer.length() << endl;
return strBuffer;
}
如评论中所述,std::string
(我假设 string
并且问题是指的)有一个构造函数获取长度并允许空字符:
string getString(char *str, int len)
{
return {str, len};
}
或者如果你想明确(避免与初始化列表构造函数混淆)
string getString(char *str, int len)
{
return string(str, len);
}
str
参数的类型可能也应该是 const char*
,而不是 char*
,len
的类型可能应该是 std::size_t
。可能 string
也应该限定为 std::string
而不是使用 using namespace std;
或 using std::string;
(取决于上下文)。
如果我在某个位置存储了 '\0' 字符,如何将 char 字段转换为字符串。例如,如果我有“ab\0bb”,a.lenght()命令会告诉我我只存储了两个字符
string getString(char *str, int len)
{
str[len] = '[=10=]';
string strBuffer = string(str);
cout << strBuffer.length() << endl;
return strBuffer;
}
如评论中所述,std::string
(我假设 string
并且问题是指的)有一个构造函数获取长度并允许空字符:
string getString(char *str, int len)
{
return {str, len};
}
或者如果你想明确(避免与初始化列表构造函数混淆)
string getString(char *str, int len)
{
return string(str, len);
}
str
参数的类型可能也应该是 const char*
,而不是 char*
,len
的类型可能应该是 std::size_t
。可能 string
也应该限定为 std::string
而不是使用 using namespace std;
或 using std::string;
(取决于上下文)。