我想要得到一个std::string
的字符串在内存中所占的字节数,而不是字符数。这个字符串包含一个多字节的字符串。std::string::size()
能帮我做到这一点吗?
编辑:另外,size()
是否也包括终止NULL
发布于 2011-06-04 16:04:02
std::string
对字节进行操作,而不是对Unicode字符进行操作,因此std::string::size()
确实会以字节为单位返回数据的大小(当然,没有std::string
存储数据所需的开销)。
不需要,std::string
只存储您告诉它存储的数据(它不需要尾随的NULL
字符)。因此,它不会包含在大小中,除非您显式创建了一个尾随NULL
字符的字符串。
发布于 2011-06-04 18:21:32
你可能会对此有点学究:
std::string x("X");
std::cout << x.size() * sizeof(std::string::value_type);
但是std::string::value_type是字符,并且sizeof(字符)被定义为1。
这只在你定义字符串类型时才变得重要(因为它在将来可能会改变,或者因为编译器选项)。
// Some header file:
typedef std::basic_string<T_CHAR> T_string;
// Source a million miles away
T_string x("X");
std::cout << x.size() * sizeof(T_string::value_type);
发布于 2011-06-04 16:04:24
std::string::size()
实际上是以字节为单位的大小。
https://stackoverflow.com/questions/6235555
复制相似问题