簡體   English   中英

輸入字符串的大小

[英]size of the input string

我想知道無論我的輸入長度如何,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 );

此外,這種轉換總是會發生,即從指針類型的任何東西,是否有一般情況? 謝謝。

sizeof為您提供以字節為單位的大小。 std::string包含指向實際數據的指針。 無論指針的大小如何,單個指針的大小都保持不變。 這與其他因素相結合,使您的總大小為8。

您正在尋找std::string::size實際長度的std::string::sizestd::string::length 如果您正在尋找一個函數來檢索任何以null結尾的C-String的大小,請使用strlen()

這里沒有完成轉換,只是sizeof將返回對象的實際字節大小。 顯然std :: string使用堆分配的內存來存儲它的實際內容,所以你沒有真正的方法來確切地知道特定字符串總共使用了多少字節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM