c++ char轉string時出現的亂碼問題

今天刷題遇到的問題。大致是這樣,需要將一個字符串提取中間一部分,然後轉爲整形,通過整形轉化爲字符型,最後返回一個字符串。
若是用

char c ;
string s = &c;

則會出現亂碼,內容爲字符串s加上亂碼。
最後發現原因是:char沒有’\0’作爲字符串的邊界,當輸出string時,string可以看成是數組,因爲string接受一個地址,那必然是首地址,但string長度並非是1,所以後面的空間並未初始化,則會出現亂碼。
string本身就是一個數據結構。
可以通過at來獲取內容,即s.at[0].
告知:
當我們用
 

char c ;
string s = &c;
cout<<s.length();`

結果是16

char c ;
string s;
s = &c;
cout<<s.length();

結果會是12
可以思考下原因。
另一種做法是嘗試用char*或char[]來保存變量,此時用string接收不會出現亂碼。
另補充冷知識:sizeof(string) = 28;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章