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