如果直接用sizeof输出的话,一般std::string与FString都是32字节大小。
但是正常要获取字符串的大小,要求得的都是字符串的内存大小。要获取实际的大小,需要获取长度*单个字符的大小。
std::string x = "abcdefg";
std::string xx = "cdefgabcdefgab";
std::string xxx = "222222wiajnduhaiudhaidijanduianduihq0uwd019duaqhdnandaojwd01uw- 9du2-9dandnad-1=djjanidnjknsklanodjnoaihwd01h0h912ue-92hdhada";
std::cout << sizeof(x) << "|" << x.size() << std::endl;
std::cout << sizeof(xx) << "|" << xx.size() << std::endl;
std::cout << sizeof(xxx) << "|" << xxx.size() << std::endl;
size_t x_size = sizeof(char) * x.size();
为什么他们是不同大小?
在C++中,使用 sizeof 运算符可以获取字符串对象本身的大小,包括字符串内容所需的内存以及用于管理字符串的一些元数据。对于 std::string 类型的字符串对象,sizeof(std::string) 返回的是字符串对象本身的大小,而不仅仅是字符串内容的大小。
而关于字符串内容的实际大小,它取决于字符串的长度和字符串所使用的存储方式。对于 std::string 类型的字符串,它会根据字符串的长度动态分配所需的内存空间来存储字符串内容。实际的字符串内容大小会根据字符串的长度而变化,比字符串对象本身的大小要大。
字符串对象本身的大小是指字符串对象占用的内存大小,包括字符串内容所需的内存以及用于管理字符串的元数据。对于 std::string 类型的字符串对象,可以使用 sizeof(std::string) 来获取字符串对象本身的大小。
字符串内容的实际大小是指字符串内容所占用的内存大小,它取决于字符串的长度和所使用的存储方式。对于 std::string 类型的字符串,实际的字符串内容大小会根据字符串的长度而变化。
需要注意的是,对于 std::string 类型的字符串,它会使用动态内存分配来管理字符串内容,因此实际的字符串内容大小可能会比字符串对象本身的大小要大。
Comments NOTHING