1
string str = "abcdefgdcb";

cout << sizeof(str.substr(0,3).c_str());

出于某种原因,上面的字符串给了我 8。我假设 c_str() 返回一个 null 字符串,并且 sizeof 使用 null 来确定字符串的大小。

4

4 回答 4

9

因为sizeof不给你字符串的长度,它给你类型的大小(const char *在这种情况下)。试试strlen

于 2012-05-19T20:49:27.497 回答
3

c_str返回一个const char *。在您的系统上sizeof (const char *) == 8, 就像任何其他指针一样。

于 2012-05-19T20:49:42.863 回答
2

8 是计算机上指针的大小(64 位),这就是 c_str() 返回的值。

使用 strlen 获取字符串的长度。

于 2012-05-19T20:50:47.020 回答
2

我假设 ... sizeof 使用 null 来确定字符串的大小。

有你的问题。 sizeof告诉你变量的大小,它与变量内部的值无关。

于 2012-05-19T20:52:51.433 回答