c/c++字符串處理大集合
- rember this
-
- strncpy(a,b,5);
- a[5]='\0';
-
- char a[10];
- memset(a,'#',sizeof(a));
- a[10]='\0';
-
- 剛開始學C/C++時,一直對字符串處理函數只知其一;不知其二,這裏列舉C/C++字符串處理函數
-
- ,但願對初學者有必定的幫助。
-
- C:
-
- char st[100];
- 1. 字符串長度
- strlen(st);
-
- 2. 字符串比較
- strcmp(st1,st2);
- strncmp(st1,st2,n); 把st1,st2的前n個進行比較。
-
- 3. 附加
- strcat(st1,st2);
- strncat(st1,st2,n); n表示鏈接上st2的前n個給st1,在最後不要加'\0'。
-
- 4. 替換
- strcpy(st1,st2);
- strncpy(st1,st2,n); n表示複製st2的前n個給st1,在最後要加'\0'。
-
- 5. 查找
- where = strchr(st,ch) ch爲要找的字符。
- where = strspn(st1,st2); 查找字符串。
- where = strstr(st1,st2);
-
-
- C++:
-
- <string>
- string str;
- 1. 字符串長度
- len = str.length();
- len = str.size();
-
- 2. 字符串比較
- 能夠直接比較
- 也能夠:
- str1.compare(str2);
- str1.compare(pos1,len1,str2,pos2,len2); 值爲負,0 ,正。
- nops 長度到完。
-
- 3. 附加
- str1 += str2;
- 或
- str1.append(str2);
- str1.append(str2.pos2,len2);
-
- 4. 字符串提取
- str2 = str1.substr();
- str2 = str1.substr(pos1);
- str2 = str1.substr(pos1,len1);
- string a=s.substr(0,4);
-
- 符串
-
-
- 5. 字符串搜索
- where = str1.find(str2);
- where = str1.find(str2,pos1); pos1是從str1的第幾位開始。
- where = str1.rfind(str2); 從後往前搜。
-
- 6. 插入字符串
- 不是賦值語句。
- str1.insert(pos1,str2);
- str1.insert(pos1,str2,pos2,len2);
- str1.insert(pos1,numchar,char); numchar是插入次數,char是要插入的字
-
- 符。
-
- 7. 替換字符串
- str1.replace(pos1,str2);
- str1.replace(pos1,str2,pos2,len2);
-
- 8. 刪除字符串
- str.erase(pos,len)
- str.clear();
-
- 9. 交換字符串
- swap(str1,str2);
-
- 10. C --> C++
- char *cstr = "Hello";
- string str1;
- cstr = cstr;
- string str2(cstr);
-
- 對於ACMer來講,C的字符串處理要比C++的方便、簡單,儘可能用C的字符串處理函數。
-
- C++中string類經常使用算法
- string類的構造函數:
-
- string(const char *s);
-
- string(int n,char c);
-
- 此外,string類還支持默認構造函數和複製構造函數,如string s1;string
-
- s2="hello";都是正確的寫法。當構造的string太長而沒法表達時會拋出
-
- length_error異常
-
- string類的字符操做:
-
- const char &operator[](int n)const;
-
- const char &at(int n)const;
-
- char &operator[](int n);
-
- char &at(int n);
-
- operator[]和at()均返回當前字符串中第n個字符的位置,但at函數提供範圍檢查,
-
- 當越界時會拋出out_of_range異常,下標運算符[]不提供檢查訪問。
-
- const char *data()const;
-
- const char *c_str()const;
-
- int copy(char *s, int n, int pos = 0) const;
-
- 拷貝到以s爲起始位置的字符數組中,返回實際拷貝的數目
-
- string的特性描述:
-
- int capacity()const;
-
- 素個數)
-
- int max_size()const;
-
- int size()const;
-
- int length()const;
-
- bool empty()const;
-
- void resize(int len,char c);
-
- 部分string類的輸入輸出操做:
-
- string類重載運算符operator>>
-
- 操做。
-
- 函數getline(istream &in,string &s);
-
- 行符'\n'分開。
-
-
-
- string的賦值:
-
- string &operator=(const string &s);
-
- string &assign(const char *s);
-
- string &assign(const char *s,int n);
-
- string &assign(const string &s);
-
- string &assign(int n,char c);
-
- string &assign(const string &s,int start,int n);
-
- n個字符賦給當前字符串
-
- string &assign(const_iterator first,const_itertor last);
-
- 代器之間的部分賦給字符串
-
-
-
- string的鏈接:
-
- string &operator+=(const string &s);
-
- string &append(const char *s);
-
- string &append(const char *s,int n);
-
- 字符串結尾
-
- string &append(const string &s);
-
- string &append(const string &s,int pos,int n);
-
- 字符鏈接到當前字符串的結尾
-
- string &append(int n,char c);
-
- string &append(const_iterator first,const_iterator last);
-
- last之間的部分鏈接到當前字符串的結尾
-
-
-
- string的比較:
-
- bool perator==(const string &s1,const string &s2)const;
-
- 否相等
-
- 運算符">","<",">=","<=","!="均被重載用於字符串的比較;
-
- int compare(const string &s) const;
-
- int compare(int pos, int n,const string &s)const;
-
- 的n個字符組成的字符串與s的大小
-
- int compare(int pos, int n,const string &s,int pos2,int n2)const;
-
- 前字符串從pos開始的n個字符組成的字符串與s中pos2開始的n2個字符組成的字符串
-
- 的大小
-
- int compare(const char *s) const;
-
- int compare(int pos, int n,const char *s) const;
-
- int compare(int pos, int n,const char *s, int pos2) const;
-
- compare函數在>時返回1,<時返回-1,==時返回0
-
- string的子串:
-
- string substr(int pos = 0,int n = npos) const;
-
- 字符串string的交換:
-
- void swap(string &s2);
-
-
-
- string類的查找函數:
-
- int find(char c, int pos = 0) const;
-
- int find(const char *s, int pos = 0) const;
-
- 中的位置
-
- int find(const char *s, int pos, int n) const;
-
- 個字符在當前串中的位置
-
- int find(const string &s, int pos = 0) const;
-
- 串中的位置
-
-
-
- int rfind(char c, int pos = npos) const;
-
- 串中的位置
-
- int rfind(const char *s, int pos = npos) const;
-
- int rfind(const char *s, int pos, int n = npos) const;
-
- int rfind(const string &s,int pos = npos) const;
-
-
-
- 功返回所在位置,失敗時返回string::npos的值
-
- int find_first_of(char c, int pos = 0) const;
-
- 現的位置
-
- int find_first_of(const char *s, int pos = 0) const;
-
- int find_first_of(const char *s, int pos, int n) const;
-
- int find_first_of(const string &s,int pos = 0) const;
-
-
-
- 失敗返回
-
- string::npos
-
- int find_first_not_of(char c, int pos = 0) const;
-
- int find_first_not_of(const char *s, int pos = 0) const;
-
- int find_first_not_of(const char *s, int pos,int n) const;
-
- int find_first_not_of(const string &s,int pos = 0) const;
-
-
-
- int find_last_of(char c, int pos = npos) const;
-
- int find_last_of(const char *s, int pos = npos) const;
-
- int find_last_of(const char *s, int pos, int n = npos) const;
-
- int find_last_of(const string &s,int pos = npos) const;
-
- int find_last_not_of(char c, int pos = npos) const;
-
- int find_last_not_of(const char *s, int pos = npos) const;
-
- int find_last_not_of(const char *s, int pos, int n) const;
-
- int find_last_not_of(const string &s,int pos = npos) const;
-
-
-
- 不過是從後向前查找
-
-
-
- string類的替換函數:
-
- string &replace(int p0, int n0,const char *s);
-
- 後在p0處插入串s
-
- string &replace(int p0, int n0,const char *s, int n);
-
- 符,而後在p0處插入字符串s的前n個字符
-
- string &replace(int p0, int n0,const string &s);
-
- 而後在p0處插入串s
-
- string &replace(int p0, int n0,const string &s, int pos, int n);
-
- 始的n0個字符,而後在p0處插入串s中從pos開始的n個字符
-
- string &replace(int p0, int n0,int n, char c);
-
- 在p0處插入n個字符c
-
- string &replace(iterator first0, iterator last0,const char *s);
-
- ,last0)之間的部分替換爲字符串s
-
- string &replace(iterator first0, iterator last0,const char *s, int n);
-
- [first0,last0)之間的部分替換爲s的前n個字符
-
- string &replace(iterator first0, iterator last0,const string &s);
-
- [first0,last0)之間的部分替換爲串s
-
- string &replace(iterator first0, iterator last0,int n, char c);
-
- ,last0)之間的部分替換爲n個字符c
-
- string &replace(iterator first0, iterator last0,const_iterator first,
-
- const_iteratorlast);
-
- 的字符串string類的插入函:
-
- string &insert(int p0, const char *s);
-
- string &insert(int p0, const char *s, int n);
-
- string &insert(int p0,const string &s);
-
- string &insert(int p0,const string &s, int pos, int n);
-
-
-
- string &insert(int p0, int n, char c);
-
- iterator insert(iterator it, char c);
-
- 位置
-
- void insert(iterator it, const_iterator first, const_iterator last);
-
- 處插入[first,last)之間的字符
-
- void insert(iterator it, int n, char c);
-
-
-
- string類的刪除函數
-
- iterator erase(iterator first, iterator last);
-
- 有字符,返回刪除後迭代器的位置
-
- iterator erase(iterator it);
-
- string &erase(int pos = 0, int n = npos);
-
- 後的字符串
-
-
-
- string類的迭代器處理:
-
- string類提供了向前和向後遍歷的迭代器iterator,迭代器提供了訪問各個字符的語
-
- 法,相似於指針操做,迭代器不檢查範圍。
-
- 用string::iterator或string::const_iterator聲明迭代器變量,const_iterator不
-
- 容許改變迭代的內容。經常使用迭代器函數有:
-
- const_iterator begin()const;
-
- iterator begin();
-
- const_iterator end()const;
-
- iterator end();
-
- const_iterator rbegin()const;
-
- iterator rbegin();
-
- const_iterator rend()const;
-
- iterator rend();
-
- 和rend用於從後向前的迭代訪問,經過設置迭代器
-
- string::reverse_iterator,string::const_reverse_iterator實現
-
-
-
- 字符串流處理:
-
- 經過定義ostringstream和istringstream變量實現,<sstream>頭文件中
-
- 例如:
-
- string input("hello,this is a test");
-
- istringstream is(input);
-
- string s1,s2,s3,s4;
-
- is>>s1>>s2>>s3>>s4;
-
- ostringstream os;
-
- os<<s1<<s2<<s3<<s4;
-
- cout<<os.str();
歡迎關注本站公眾號,獲取更多信息