此问题已在此处有答案:
Why is sizeof(string) == 32?(6个回答)
Why is sizeof(std::string) only eight bytes?(2个答案)
8天前关闭
#include <iostream>
using namespace std;
int main()
{
string str = "abcdefghijklmnopqrstuvwy";
cout << sizeof str << endl;
cout<< sizeof "abcdefghijklmnopqrstuvwy"<<endl;
}
输出:
24
25
为什么字符串的大小不同,而字符数相同?
1条答案
按热度按时间vnzz0bqm1#
因为在第一个字符串的情况下,它被分配给,因此转换为,
std::string
或C++字符串,这是一个固定大小的对象,存储了对幕后字符串分配的引用。在您的实现中,sizeof
任意std::string
恰好是24。但是当你只写
sizeof "abcdefghijklmnopqrstuvwy"
本身时,字符串被解释为C字符串或char[25]
,它包括24个可见字符和一个名为null结束符的空字符。有关详细信息,请参阅Difference between string and char[] types in C++和链接的重复项。