關於C++ string和c類型字元數組的對比_C 語言

來源:互聯網
上載者:User

在c++中string是很方便操作的字串,支援多種算數運算和比較運算,操作起來非常靈活。string也具有一些容器的性質,可以通過迭代器對字元元素進行訪問

c類型的字元數組有如下三種初始化方式:

//前兩種的初始化方式是等同的,最後一種沒有‘\0'char *cp="hello";char c_arr[]="hello";char c_arr2[]={'h','e','l','l','o'};

這三種定義c字串的方式,其中前兩種雖然形式不一樣但含義是一摸一樣的,沒有差別,在計算字元長度的時候都會比實際顯示的字元長度多1,因為這兩種初始化會在字串末尾預設添加了一個‘\0'。而第三種初始化方式的長度就是方括弧裡的字元數,這種方式並不會預設末尾結束符'\0'。如果用第三種方式聲明和前兩種方式同樣的字串則需這樣聲明:

char c_arr2[]={'h', 'e', 'l', 'l', 'o', '\0' };

string可以用c字串進行初始化,如

string s1(cp);//複製cp中的所有字元到s1中(除了末尾Null 字元'\0')string s2(c_arr,2);//複製c_arr兩個字元到s2中string s3(c_arr2);//error

但注意,當對string用c字串進行初始化時,或是指定初始化的長度(如string s2(c_arr,2);),如果不指定長度需要c字串必須以'\0'結尾,如果不是以'\0'結尾則程式會出錯。如代碼(string s3(c_arr2);)程式編譯的時候就會出錯。

string類型也可以轉換成c類型的字串,可以通過string的成員方法string::c_str()進行轉換。如下

string str("hello");const char *cp=str.c_str();

以上就是小編為大家帶來的關於C++ string和c類型字元數組的對比全部內容了,希望大家多多支援雲棲社區~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.