注意,不能使用字元或者整數去初始化字串。
常見的 string 類建構函式有以下幾種形式:
string strs //生成空字串
string s(str) //生成字串str的複製品
string s(str, stridx) //將字串str中始於stridx的部分作為建構函式的初值
string s(str, strbegin, strlen) //將字串str中始於strbegin、長度為strlen的部分作為字串初值
string s(cstr) //以C_string型別cstr作為字串s的初值
string s(cstr,char_len) //以C_string型別cstr的前char_len個字串作為字串s的初值
strings(num, c) //生成一個字串,包含num個c字元
strings(strs, beg, end) //以區間[beg, end]內的字元作為字串s的初值
~string() //銷毀所有記憶體,釋放記憶體
如果字串只包含一個字元,使用建構函式對其初始化時,使用以下兩種形式比較合理:
std::string s('x'); //錯誤
std::string s(1, 'x'); //正確
std::string s("x"); //正確
C_string 一般被認為是常規的 C++ 字串。目前,在 C++ 中確實存在一個從 const char * 到 string 的隱式型別轉換,卻不存在從 string 物件到 C_string 的自動型別轉換。對於 string 型別的字串,可以通過 c_str() 函數返回該 string 類物件對應的 C_string。#include <iostream> #include <string> using namespace std; int main () { string str ("12345678"); char ch[ ] = "abcdefgh"; string a; //定義一個空字串 string str_1 (str); //建構函式,全部複製 string str_2 (str, 2, 5); //建構函式,從字串str的第2個元素開始,複製5個元素,賦值給str_2 string str_3 (ch, 5); //將字串ch的前5個元素賦值給str_3 string str_4 (5,'X'); //將 5 個 'X' 組成的字串 "XXXXX" 賦值給 str_4 string str_5 (str.begin(), str.end()); //複製字串 str 的所有元素,並賦值給 str_5 cout << str << endl; cout << a << endl ; cout << str_1 << endl; cout << str_2 << endl; cout << str_3 << endl; cout << str_4 << endl; cout << str_5 << endl; return 0; }程式執行結果為:
12345678
12345678
34567
abcde
XXXXX
12345678