现在的位置: 首页 > 综合 > 正文

C++字符串的处理

2018年02月12日 ⁄ 综合 ⁄ 共 11288字 ⁄ 字号 评论关闭
 

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();

抱歉!评论已关闭.