string str = "abcdefgdcb";
cout << sizeof(str.substr(0,3).c_str());
出于某种原因,上面的字符串给了我 8。我假设 c_str() 返回一个 null 字符串,并且 sizeof 使用 null 来确定字符串的大小。
因为sizeof
不给你字符串的长度,它给你类型的大小(const char *
在这种情况下)。试试strlen
。
c_str
返回一个const char *
。在您的系统上sizeof (const char *) == 8
, 就像任何其他指针一样。
8 是计算机上指针的大小(64 位),这就是 c_str() 返回的值。
使用 strlen 获取字符串的长度。
我假设 ... sizeof 使用 null 来确定字符串的大小。
有你的问题。 sizeof
告诉你变量的大小,它与变量内部的值无关。