输入字符串的大小

时间:2012-05-25 23:24:50

标签: c++

我想知道无论输入的长度如何,sizeof函数如何返回8

int main(){
   string input;
   getline(cin,input);
   cout << "size of input is  " << sizeof(input) << endl; //I am guessing 
//it returns the size of a pointer because my OS is 64 bits.
   return 0;
}

所以我的问题是隐式转换发生在哪里?这是 getline 的声明,

istream& getline ( istream& is, string& str );

此外,这种转换总是会发生,即无论指针类型如何,是否有一般情况呢?谢谢。

2 个答案:

答案 0 :(得分:13)

sizeof为您提供字节大小。 std::string包含指向实际数据的指针。无论指针的大小如何,单个指针的大小都保持不变。这与其他因素相结合,使您的总大小为8。

您正在寻找std::string::sizestd::string::length字符串的实际长度。如果您正在寻找一个函数来检索任何以null结尾的C-String的大小,请使用strlen()

答案 1 :(得分:3)

这里没有完成转换,只是sizeof将返回对象的实际字节大小。显然,std :: string使用堆分配的内存来存储其实际内容,因此您无法确切地知道特定字符串总共使用了多少字节