一. 首先作為一種標准庫類型,string存在四種基本的構造函數。如下:
string s; //默認構造函數,s為空串
string s(s1);//用s1來初始化s
string s("My Blog http://www.BkJia.com"); //將s初始化為一個字符串字面值
string s(n,'c'); //將s初始化為n個‘c’的副本
二.對於輸入主要就是cin>>s;
(1)讀取並忽略開頭所有的空白字符。
(2)讀取字符直至再次遇到空白字符,讀取終止。
(3)輸入操作符會返回所讀的數據流。
當要讀入一整行時可以使用getline函數,getline函數需要兩個參數第一個為輸入流 對象,第二個為一個string類型對象。值得注意的是getline並不忽略行開頭的空白字 符。
三.string::size_type類型
(1)size()函數我們平時都直接默認它返回int類型的值,事實上size()函數返回的是string::size_type類型的值。
(2)string類類型和許多其他類型都定義了一些配套類型。重要的是通過這種配套類型,庫類型的使用就能與機器無關。size_type就是這些配套類型中的一種。
(3)建議string的size操作結果的變量為string::size_type類型。特別重要的是,盡量 不要把size的返回值賦值給一個int變量。
四.string對象的相加注意
當進行string對象和字符串字面值混合連接操作時,+操作符的左右操作數必
須至少有一個是string類型的對象。
例.s2=“world”; string s=“hellow”+“,”+s2;這裡是錯誤的,因為第一個+
號的兩邊都為string字面值。
五.string轉為char *
很多時候我們還是需要將string類型的轉化為char*來實現自定義的操作,
C++標准庫也為了和之前用C寫的程序兼容,於是可以用string的c_str()函數。
string a="My Blog www.2cto.com";
char * b=a.c_str();//這樣不能通過編譯,原因是為了防止string對象內容被惡意修改,返回的是const類型的對象,所以要加const修飾
const char * b=a.c_str();//這樣就能編譯通過了。
簡單總結了一點string使用時的注意事項,歡迎大家補充交流!
作者 凌風