• 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 *itoaint 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); 值为负,,正。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();

  • 相关阅读:
    PAT甲级——1110 Complete Binary Tree (完全二叉树)
    PAT甲级——1111 Online Map (单源最短路经的Dijkstra算法、priority_queue的使用)
    PAT甲级——1112 Stucked Keyboard (字符串+stl)
    PAT甲级——1114 Family Property (并查集)
    PAT甲级——1118 Birds in Forest (并查集)
    Pre- and Post-order Traversals(先序+后序序列,建立二叉树)
    PAT甲级——1123 Is It a Complete AVL Tree (完全AVL树的判断)
    AVL树(自平衡二叉查找树)
    PAT甲级——1126 Eulerian Path
    团队项目-选题报告
  • 原文地址:https://www.cnblogs.com/lidabo/p/2987452.html
Copyright © 2020-2023  润新知