今天刷題遇到的問題。大體是這樣,須要將一個字符串提取中間一部分,而後轉爲整形,經過整形轉化爲字符型,最後返回一個字符串。
如果用
數組
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;