首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取std::string字符串的字节大小

获取std::string字符串的字节大小
EN

Stack Overflow用户
提问于 2011-06-04 16:00:33
回答 6查看 32.4K关注 0票数 22

我想要得到一个std::string的字符串在内存中所占的字节数,而不是字符数。这个字符串包含一个多字节的字符串。std::string::size()能帮我做到这一点吗?

编辑:另外,size()是否也包括终止NULL

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-04 16:04:02

std::string对字节进行操作,而不是对Unicode字符进行操作,因此std::string::size()确实会以字节为单位返回数据的大小(当然,没有std::string存储数据所需的开销)。

不需要,std::string只存储您告诉它存储的数据(它不需要尾随的NULL字符)。因此,它不会包含在大小中,除非您显式创建了一个尾随NULL字符的字符串。

票数 26
EN

Stack Overflow用户

发布于 2011-06-04 18:21:32

你可能会对此有点学究:

代码语言:javascript
复制
std::string x("X");

std::cout << x.size() * sizeof(std::string::value_type);

但是std::string::value_type是字符,并且sizeof(字符)被定义为1。

这只在你定义字符串类型时才变得重要(因为它在将来可能会改变,或者因为编译器选项)。

代码语言:javascript
复制
// 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);
票数 9
EN

Stack Overflow用户

发布于 2011-06-04 16:04:24

std::string::size()实际上是以字节为单位的大小。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6235555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档