在 C++ 中,為了方便處理字符串,引入了 string 類。string 類型支持長度可變的字符串。
使用 string 之前,必須包含相應的頭文件,string 屬於 std 命名域的,因此需要通過命名限定:
#include
using std::string; //using namespace std;
使用示例如下:
#include#include using std::cout; using std::endl; using std::string; int main(int argc, char *argv[]) { string s1 = mike; cout << s1 = << s1 << endl; //s1 = mike string s2(s1); //將 s2 初始化為 s1 的一個副本 cout << s2 = << s2 << endl; // s2 = mike string s3(jiang); //將 s3 初始化為 mike cout << s3 = << s3 << endl; // s3 = jiang string s4(10, 'a'); // s4 的值為 10 個 'a' cout << s4 = << s4 << endl; //s1 = mike return 0; }
運行結果如下:
示例代碼如下:
#include#include using std::cout; using std::endl; using std::string; int main(int argc, char *argv[]) { string s1 = mike; // 如果s1為空串,則返回true,否則返回false if( true == s1.empty() ){ cout << s1 is empty ; }else{ cout << s1 is no empty ; } // 字符串的大小, s1.size()等價於s1.length() cout << len = << s1.size() << endl; //返回 s1 最大容量 cout << max_size = << s1.max_size() << endl; //取出每一個字符 for(int i = 0; i < s1.size(); i++){ //s1[i]等價於s1.at(i) cout << i << = << s1[i] << endl; } string s2 = jiang; cout << s1 + s2 = << s1+s2 << endl; // c++ string 和 C char * 相互轉換 // string to const char * const char *str = s1.c_str(); cout << c_str = << str << endl; const char *data = s2.data(); cout << data = << data << endl; // char * to string const char *buf = hello, c++; //string my_str = string(buf); string my_str = buf; cout << my_str = << my_str << endl; //s1和s2字符串交換 s1 = mike; s2 = jiang; s1.swap(s2); cout << s1 = << s1 << , s2 = << s2 << endl; s1.clear(); s1 = mike; cout << s1 = << s1 << endl; s1 = mikejiang; //取出 s1 從 2 開始後的 4 個字符,位置從0開始 s2 = s1.substr(2, 4); cout << s2 = << s2 << endl; s1 = mikejiang; //刪除 s1 從 2 開始後的 4 個字符,位置從0開始 s2 = s1.erase(2, 4); cout << s2 = << s2 << endl; s1 = mike; //s1 從 4 開始(位置從0開始),插入jiang字符串 s2 = s1.insert(4, jiang); cout << s2 = << s2 << endl; s1=mikejiang; //刪除s1從4開始的5個字符,然後在5位置處插入tyson s2 = s1.replace(4, 5, tyson); cout << s2 = << s2 << endl; s1=mikejiang; //查找字符串j在s1中的位置(位置從0開始) int n = s1.find(j); cout << n = << n << endl; return 0; }
運行結果如下:
string 類提供了向前和向後遍歷的迭代器 iterator,迭代器提供了訪問各個字符的語法,類似於指針操作,迭代器不檢查范圍。用 string::iterator 或 string::const_iterator 聲明迭代器變量,const_iterator 不允許改變迭代的內容。
示例代碼如下:
#include#include using std::cout; using std::endl; using std::string; int main(int argc, char *argv[]) { string s=mike; //初始化為mike //通過迭代器把所有字符元素的值打印出來 string::const_iterator t; for( t=s.begin(); t!=s.end(); t++){ cout<< *t << , ; } cout << endl; string::iterator it; //通過迭代器給所有字符元素賦值為'a' for( it=s.begin(); it!=s.end(); it++){ *it = 'a'; } cout << endl; //通過迭代器把所有元素的值打印出來 for( it=s.begin(); it!=s.end(); it++){ cout<< *it << , ; } cout << endl; s = mikejiang; it = s.begin(); //返回指string最開始位置元素的指針(迭代器) //刪除指針it+1指向位置的元素,返回指向下一個元素位置的指針(迭代器) s.erase(it+1); // remove i cout << endl << after erase: ; //通過迭代器把所有元素的值打印出來 for( it=s.begin(); it!=s.end(); it++){ cout<< *it << , ; } cout << endl; s = mmmmmm; it = s.begin(); //在位置it後插入3個'a' s.insert(it, 3, 'a'); cout << endl << after insert: ; //通過迭代器把所有元素的值打印出來 for( it=s.begin(); it!=s.end(); it++){ cout<< *it << , ; } cout << endl; return 0; }