Aar*_*ron 1 c++ linux string char
当我使用char调用gethostname我的长度为25但是当我使用字符串时我的长度是64.不确定为什么.他们两个我在HOST_NAME_MAX上声明了相同的大小.
char hostname[HOST_NAME_MAX];
BOOL host = gethostname(hostname, sizeof hostname);
expectedComputerName = hostname;
int size2 = expectedComputerName.length();
std::string test(HOST_NAME_MAX, 0);
host = gethostname(&test[0], test.length());
int testSize = test.length();
Run Code Online (Sandbox Code Playgroud)
一个std::string对象可以包含NULS(即'\0'字符).您将名称存储在以HOST_NAME_MAX长度大小创建的字符串对象的第一个字节中.
在字符串数据的开头存储内容不会改变因此保留的字符串的长度HOST_NAME_MAX.
从char指针创建字符串时,创建的std::string对象将包含最多但不包括第一个NUL字符(0x00).原因是C字符串不能包含NULs,因为第一个NUL字符串用于标记字符串的结尾.