输入字符串的大小

Con*_*Hui 2 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;
}
Run Code Online (Sandbox Code Playgroud)

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

istream& getline ( istream& is, string& str );
Run Code Online (Sandbox Code Playgroud)

此外,这种转换总是发生,即从指针类型的任何东西,是否有一般情况?谢谢.

chr*_*ris 13

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

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