C++字符串的處理

 

string定義:

a) string s;

//生成一個空字符串s

string a="eholldfs";

    a="dfgdfg";

    cin>>a;

b) string s(str)

 //拷貝構造函數生成str的複製品

c) string s(str,stridx)

 //將字符串str"始於位置stridx"的部分當作字符串的初值

d) string s(str,stridx,strlen)

//將字符串str"始於stridx且長度頂多strlen"的部分作爲字符串的初值

e) string s(cstr)

//C字符串作爲s的初值

f) string s(chars,chars_len)

//C字符串前chars_len個字符作爲字符串s的初值。

g) string s(num,c) àstring a(7,’0’)

//生成一個字符串,包含numc字符

h) string s(beg,end)

//以區間beg;end(不包含end)內的字符作爲字符串s的初值

i)                    s.~string()

//銷燬所有字符,釋放內存

string函數:

1.string int

number = atoi( st.c_str() );

2.int string

函數名稱: itoa
函數原型
: char *itoa(int value,char *string,int radix)
函數功能: 將整形數value轉換爲其等價的字符串

函數返回: 指向string的指針
參數說明: value-要轉化的數值,radix-轉換的進制,如10表示按十進制轉換  
所屬文件
: <stdlib.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
  int number=123456L;
  char string[25];
  ltoa(number,string,10);
  printf("integer=%ld string=%s",number,string);
  return 0;
}

 

 

 

itoa函數

求助編輯百科名片

itoa爲c語言的一個函數。itoa函數是一個廣泛應用的,從非標準擴展到標準的C語言。它不能被移植,因爲它不是標準定義下的C語言,但是,編譯器通常在一個不遵循程式標準的模式下允許其通過header<stdlib.h> ,因爲它是一個從邏輯對應到標準庫的函數。itoa取整數輸入值,並將其轉換爲數字的基數。

目錄

原 型

功 能

1.    用 法

程序例

1.    注意事項:?

數字轉化爲字符串函數名 及 功能

展開

原 型

功 能

1.    用 法

程序例

1.    注意事項:?

數字轉化爲字符串函數名 及 功能

展開

編輯本段原 型

  char *itoa( int value, char *string,int radix);

  原型說明:

  value欲轉換的數據。

  string:目標字符串的地址。

  radix:轉換後的進制數,可以是10進制、16進制等。

編輯本段功 能

  把一整數轉換爲字符串

用 法

  itoa(i,num,10);

  i ----需要轉換成字符串的數字

  num---- 轉換後保存字符串的變量

  10---- 轉換數字的基數(即進制)。10就是說按10進制轉換數字。還可以是2,8,16等等你喜歡的進制類型

  返回值:指向num這個字符串的指針

編輯本段程序例

  程序例:

  #include <stdlib.h>

  #include <stdio.h>

  int main(void)

  {

  int number = 12345;

  char string[25];

  itoa(number, string, 10);

  printf("integer = %d string = %s\n", number, string);

  return 0;

  }

  char *itoa(int value,char *string,int radix)

  將整數value轉換成字符串存入string,

  radix爲轉換時所用基數(保存到字符串中的數據的進制基數)

注意事項:?

  itoa()函數有3個參數:第一個參數是要轉換的數字,第二個參數是要寫入轉換結果的目標字符串,第三個參數是轉移數字時所用的基數(進制)。在上例中,轉換基數爲10,就意味着以10爲轉換進制。10:十進制;2:二進制...

  itoa並不是一個標準的C函數,它是Windows特有的,如果要寫跨平臺的程序,請用sprintf。

  是Windows平臺下擴展的,標準庫中有sprintf,功能比這個更強,用法跟printf類似:

  char str[255];

  sprintf(str, "%x", 100); //將100轉爲16進製表示的字符串。

  下列函數可以將整數轉換爲字符串:

編輯本段數字轉化爲字符串函數名 及 功能

  itoa() 將整型值轉換爲字符串

  litoa() 將長整型值轉換爲字符串

  ultoa() 將無符號長整型值轉換爲字符串

 

3.string char

string str = "abcd";

char *ch = str.c_str();

4. char string

   char *cstr = "Hello";

   string str1;

   cstr = cstr;

   string str2(cstr);

5.拷貝

   a=b;

6. 字符串長度

   len = str.length();

   len = str.size();

7. 字符串比較

   直接比較 >   >=   <   <=   ==   !=

   str1.compare(str2);

   str1.compare(pos1,len1,str2,pos2,len2); 值爲負,0 ,正。nops 長度到完。

8. 附加

   str1 += str2;

9. 字符串提取

    str2 = str1.substr(pos1,len1);

10. 字符串搜索

   where = str1.find(str2);

   where = str1.find(str2,pos1); pos1是從str1的第幾位開始。

   where = str1.rfind(str2); 從後往前搜。

11. 插入字符串

   str1.insert(pos1,str2);

   str1.insert(pos1,str2,pos2,len2);

   str1.insert(pos1,numchar,char);    numchar是插入次數,char是要插入的字符。

12. 替換字符串

   str1.replace(pos1,str2);

   str1.replace(pos1,str2,pos2,len2);

13. 刪除字符串

   str.erase(pos,len)

   str.clear();

14. 交換字符串

   swap(str1,str2);

#include<algorithm> 

main()

{

      int n;

      cin>>n;

      string a[999]={""};//字符串數組,多個字符串

      for(int i=0;i<=n-1;i++)

  cin>>a[i];

      sort(a,a+n);//排序,數組名,數組長度

      for(int i=n-1;i>=0;i--) cout<<a[i];

      system("pause");

}

#include<iostream>

using namespace std;

#include<string>         

main()

{

      string x;    int n,i=0;  

      cin>>x>>n;

      while(n!=0)

      if(x[i]>x[i+1])

      {x.erase(i--,1);n--;}//從字符串中刪除一個元素

      else i++;               

      cout<<x;

      system("pause");

}

#include<iostream>

using namespace std;

int main(){

    

     string str = "12345";

          cout << atoi(str.c_str())<<endl;   //串轉換成數       

    system("pause");

}

char處理:

函數名: strcat

功能: 字符串拼接函數

用法: char *strcat(char *destin, char *source);

 

函數名: strchr

功能: 在一個串中查找給定字符的第一個匹配之處\

用法: char *strchr(char *str, char c);

 

函數名: strcmp

功能: 串比較

用法: int strcmp(char *str1, char *str2);

Asic碼,str1>str2,返回值 > 0;兩串相等,返回0

 

函數名: strncmpi

功能: 將一個串中的一部分與另一個串比較, 不管大小寫

用法: int strncmpi(char *str1, char *str2, unsigned maxlen);

 

函數名: strcpy

功能: 串拷貝

用法: char *strcpy(char *str1, char *str2);

 

函數名: strcspn

功能: 在串中查找第一個給定字符集內容的段

用法: int strcspn(char *str1, char *str2);

 

函數名: strdup

功能: 將串拷貝到新建的位置處

用法: char *strdup(char *str);

 

函數名: stricmp

功能: 以大小寫不敏感方式比較兩個串

用法: int stricmp(char *str1, char *str2);

 

函數名: strerror

功能: 返回指向錯誤信息字符串的指針

用法: char *strerror(int errnum);

 

函數名: strcmpi

功能: 將一個串與另一個比較, 不管大小寫

用法: int strcmpi(char *str1, char *str2);

 

函數名: strncmp

功能: 串比較

用法: int strncmp(char *str1, char *str2, int maxlen);

 

函數名: strncmpi

功能: 把串中的一部分與另一串中的一部分比較, 不管大小寫

用法: int strncmpi(char *str1, char *str2);

 

函數名: strncpy

功能: 串拷貝

用法: char *strncpy(char *destin, char *source, int maxlen);

 

函數名: strnicmp

功能: 不注重大小寫地比較兩個串

用法: int strnicmp(char *str1, char *str2, unsigned maxlen);

 

函數名: strnset

功能: 將一個串中的所有字符都設爲指定字符

用法: char *strnset(char *str, char ch, unsigned n);

 

函數名: strpbrk

功能: 在串中查找給定字符集中的字符

用法: char *strpbrk(char *str1, char *str2);

 

函數名: strrchr

功能: 在串中查找指定字符的最後一個出現

用法: char *strrchr(char *str, char c);

 

函數名: strrev

功能: 串倒轉

用法: char *strrev(char *str);

 

函數名: strset

功能: 將一個串中的所有字符都設爲指定字符

用法: char *strset(char *str, char c);

 

函數名: strspn

功能: 在串中查找指定字符集的子集的第一次出現

用法: int strspn(char *str1, char *str2);

 

函數名: strstr

功能: 在串中查找指定字符串的第一次出現

用法: char *strstr(char *str1, char *str2);

 

函數名: strtod

功能: 將字符串轉換爲double型值

用法: double strtod(char *str, char **endptr);

 

函數名: strtok

功能: 查找由在第二個串中指定的分界符分隔開的單詞

用法: char *strtok(char *str1, char *str2);

 

函數名: strtol

功能: 將串轉換爲長整數

用法: long strtol(char *str, char **endptr, int base);

 

函數名: strupr

功能: 將串中的小寫字母轉換爲大寫字母

用法: char *strupr(char *str);

 

函數名: swab

功能: 交換字節

用法: void swab (char *from, char *to, int nbytes);

string其他:

char* strspnp( const char* str, const char* chrset );

 

C++string類常用算法

string類的構造函數:

 

string(const char *s);    //c字符串s初始化

string(int n,char c);     //n個字符c初始化

此外,string類還支持默認構造函數和複製構造函數,如string s1string 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;//返回一個非null終止的c字符數組

const char *c_str()const;//返回一個以null終止的c字符串

int copy(char *s, int n, int pos = 0) const;//把當前串中以pos開始的n個字符拷貝到以s爲起始位置的字符數組中,返回實際拷貝的數目

string的特性描述:

int capacity()const;    //返回當前容量(即string中不必增加內存即可存放的元素個數)

int max_size()const;    //返回string對象中可存放的最大字符串的長度

int size()const;        //返回當前字符串的大小

int length()const;       //返回當前字符串的長度

bool empty()const;        //當前字符串是否爲空

void resize(int len,char c);//把字符串當前大小置爲len,並用字符c填充不足的部分string類的輸入輸出操作:

string類重載運算符operator>>  //用於輸入,同樣重載運算符operator<<用於輸出操作。

函數getline(istream &in,string &s);//用於從輸入流in中讀取字符串到s中,以換行符'\n'分開。

string的賦值:

string &operator=(const string &s);//把字符串s賦給當前字符串

string &assign(const char *s);//c類型字符串s賦值

string &assign(const char *s,int n);//c字符串s開始的n個字符賦值

string &assign(const string &s);//把字符串s賦給當前字符串

string &assign(int n,char c);//n個字符c賦值給當前字符串

string &assign(const string &s,int start,int n);//把字符串s中從start開始的n個字符賦給當前字符串

string &assign(const_iterator first,const_itertor last);//firstlast迭代器之間的部分賦給字符串

string的連接:

string &operator+=(const string &s);//把字符串s連接到當前字符串的結尾

string &append(const char *s);   //c類型字符串s連接到當前字符串結尾

string &append(const char *s,int n);//c類型字符串s的前n個字符連接到當前字符串結尾

string &append(const string &s);    //operator+=()

string &append(const string &s,int pos,int n); //把字符串s中從pos開始的n個字符連接到當前字符串的結尾

string &append(int n,char c);        //在當前字符串結尾添加n個字符c

string &append(const_iterator first,const_iterator last);//把迭代器firstlast之間的部分連接到當前字符串的結尾

string的比較:

bool perator==(const string &s1,const string &s2)const;//比較兩個字符串是否相等

運算符">","<",">=","<=","!="均被重載用於字符串的比較;

int compare(const string &s) const;//比較當前字符串和s的大小

int compare(int pos, int n,const string &s)const;//比較當前字符串從pos開始的n個字符組成的字符串與s的大小

int compare(int pos, int n,const string &s,int pos2,int n2)const;//比較當前字符串從pos開始的n個字符組成的字符串與spos2開始的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==時返回

string的子串:

string substr(int pos = 0,int n = npos) const;//返回pos開始的n個字符組成的字符串string的交換:

void swap(string &s2);    //交換當前字符串與s2的值

string類的查找函數:

int find(char c, int pos = 0) const;//pos開始查找字符c在當前字符串的位置

int find(const char *s, int pos = 0) const;//pos開始查找字符串s在當前串中的位置

int find(const char *s, int pos, int n) const;//pos開始查找字符串s中前n個字符在當前串中的位置

int find(const string &s, int pos = 0) const;//pos開始查找字符串s在當前串中的位置

//查找成功時返回所在位置,失敗返回string::npos的值

int rfind(char c, int pos = npos) const;//pos開始從後向前查找字符c在當前串中的位置

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;

//pos開始從後向前查找字符串s中前n個字符組成的字符串在當前串中的位置,成功返回所在位置,失敗時返回string::npos的值

int find_first_of(char c, int pos = 0) const;//pos開始查找字符c第一次出現的位置

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;

//pos開始查找當前串中第一個在s的前n個字符組成的數組裏的字符的位置。查找失敗返回

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;

//從當前串中查找第一個不在串s中的字符出現的位置,失敗返回string::npos

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;

//find_last_offind_last_not_offind_first_offind_first_not_of相似,只不過是從後向前查找

string類的替換函數:

 

string &replace(int p0, int n0,const char *s);//刪除從p0開始的n0個字符,然後在p0處插入串s

 

string &replace(int p0, int n0,const char *s, int n);//刪除p0開始的n0個字符,然後在p0處插入字符串s的前n個字符

 

string &replace(int p0, int n0,const string &s);//刪除從p0開始的n0個字符,然後在p0處插入串s

 

string &replace(int p0, int n0,const string &s, int pos, int n);//刪除p0開始的n0個字符,然後在p0處插入串s中從pos開始的n個字符

 

string &replace(int p0, int n0,int n, char c);//刪除p0開始的n0個字符,然後在p0處插入n個字符c

 

string &replace(iterator first0, iterator last0,const char *s);//[first0last0)之間的部分替換爲字符串s

 

string &replace(iterator first0, iterator last0,const char *s, int n);//[first0last0)之間的部分替換爲s的前n個字符

 

string &replace(iterator first0, iterator last0,const string &s);//[first0last0)之間的部分替換爲串s

 

string &replace(iterator first0, iterator last0,int n, char c);//[first0last0)之間的部分替換爲n個字符c

 

string &replace(iterator first0, iterator last0,const_iterator first, const_iteratorlast);//[first0last0)之間的部分替換成[firstlast)之間的字符串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);

 

//4個函數在p0位置插入字符串spos開始的前n個字符

 

string &insert(int p0, int n, char c);//此函數在p0處插入n個字符c

 

iterator insert(iterator it, char c);//it處插入字符c,返回插入後迭代器的位置

 

void insert(iterator it, const_iterator first, const_iterator last);//it處插入[firstlast)之間的字符

 

void insert(iterator it, int n, char c);//it處插入n個字符c

 

 

 

string類的刪除函數

 

iterator erase(iterator first, iterator last);//刪除[firstlast)之間的所有字符,返回刪除後迭代器的位置

 

iterator erase(iterator it);//刪除it指向的字符,返回刪除後迭代器的位置

 

string &erase(int pos = 0, int n = npos);//刪除pos開始的n個字符,返回修改後的字符串

 

 

 

string類的迭代器處理:

 

string類提供了向前和向後遍歷的迭代器iterator,迭代器提供了訪問各個字符的語法,類似於指針操作,迭代器不檢查範圍。

 

string::iteratorstring::const_iterator聲明迭代器變量,const_iterator不允許改變迭代的內容。常用迭代器函數有:

 

const_iterator begin()const;

 

iterator begin();                //返回string的起始位置

 

const_iterator end()const;

 

iterator end();                    //返回string的最後一個字符後面的位置

 

const_iterator rbegin()const;

 

iterator rbegin();                //返回string的最後一個字符的位置

 

const_iterator rend()const;

 

iterator rend();                    //返回string第一個字符位置的前面rbeginrend用於從後向前的迭代訪問,通過設置迭代器

 

string::reverse_iterator,string::const_reverse_iterator實現

 

 

 

字符串流處理:

 

通過定義ostringstreamistringstream變量實現,<sstream>頭文件中

 

例如:

 

    string input("hello,this is a test");

 

    istringstream is(input);

 

    string s1,s2,s3,s4;

 

    is>>s1>>s2>>s3>>s4;//s1="hello,this",s2="is",s3="a",s4="test"

 

    ostringstream os;

 

    os<<s1<<s2<<s3<<s4;

 

    cout<<os.str();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章