日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++中的string 类型占几个字节

發布時間:2025/6/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++中的string 类型占几个字节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++中的string 類型占幾個字節

一:先看一道面面試題:

題目是要求輸出:TrendMicroSoftUSCN 然后要求修改程序,使程序能輸出以上結果.代碼如下:

#include <iostream> #include <string> using namespace std; int main(int argc,char * argv[]) {string strArr1[]={ “Trend “, “Micro “, “soft “};string *p=new string[2];p[0]= “US “;p[1]= “CN “;cout < <sizeof(strArr1) < <endl;cout < <sizeof(p) < <endl;cout < <sizeof(string) < <endl;for(int i=0;i <sizeof(strArr1)/sizeof(string);i++)cout < <strArr1;for(i=0;i <sizeof(p)/sizeof(string);i++)cout < <p;cout < <endl; }

修改之后的程序:

#include <iostream> #include <string> using namespace std; int main(int argc,char * argv[]) {string strArr1[]={"Trend","Micro","soft"};string *p=new string[2];p[0]= "US";p[1]= "CN";cout<<"sizeof(strArr1):"<<sizeof(strArr1)<<endl;cout<<"sizeof(p):"<<sizeof(p)<<endl;cout<<"sizeof(string):"<<sizeof(string) <<endl;for(int i=0;i<sizeof(strArr1)/sizeof(string);i++)cout<<strArr1[i];for(int i=0;i<sizeof(*p)*2/sizeof(string);i++)cout <<p[i];cout<<endl; }

注意:sizeof(strarr1)表示該數組所占空間,相當于sizeof(string)*3,而sizeof(p),指針所占的空間均為4,*p,才是其所指占用的空間。

如果:

二:在C語言中我們操作字符串肯定用到的是指針或者數組,這樣相對來說對字符串的處理還是比較麻煩的,好在C++中提供了string 類型的支持,讓我們在處理字符串時方便了許多。

#include <iostream> using namespace std;int main(void) {string str_test1; string str_test2 = "Hello World"; int value1, value2, value3; value1 = sizeof(str_test1); value2 = sizeof(str_test2); value3 = sizeof(string);cout<<"str_test1占 "<<value1<<" 個字節"<<endl; cout<<"str_test2占 "<<value2<<" 個字節"<<endl; cout<<"string占 "<<value3<<" 個字節"<<endl; system("pause"); return 0; }

首先,我用G++編譯運行,得到的結果如下圖所示:

這說明string占4個字節。之后,我用VS2012編譯運行,得到的結果如下圖所示:

奇怪,這里string竟然占28個字節。
這里,我們注意觀察,還會發現一個問題,不管有沒有對string類型的變量賦值,或者是賦什么值,得到的結果是一樣的。

下面,來解釋上述問題:
string的實現在各庫中可能有所不同,但是在同一庫中相同一點是,無論你的string里放多長的字符串,它的sizeof()都是固定的,字符串所占的空間是從堆中動態分配的,與sizeof()無關。 ? ?sizeof(string)=4可能是最典型的實現之一,不過也有sizeof()為12、32字節的庫實現。通常,我們所用到的 string 類型一般都會是這樣實現:
?

class{ char *_Ptr; //指向字符串的指針 int _Len; //字符串的長度 ........ };

所以,我們一般接觸到的string類型所占字節數為 8+。

總結

以上是生活随笔為你收集整理的C++中的string 类型占几个字节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。