c++string用法举例,c++里string的用法

  c++string用法举例,c++里string的用法

  相信用过MFC编程的朋友应该对这个类CString印象很深吧?的确,MFC中的CString类用起来真的非常方便。但是如果离开MFC框架,有没有那么方便使用的类呢?答案是肯定的。有人可能会说,即使不用MFC框架,也能找到在MFC中使用API的方法。具体操作方法在本文最后给出。其实很多人可能都忽略了标准C中string类的使用,C标准中提供的string类的功能也是非常强大的,一般我们开发项目的时候都可以用到。现列举部分具体用法如下,仅供参考。好了,废话少说,言归正传!

  要在标准c中使用string类,必须包含

  #include string //注意是string,不是string.h头文件用。h在C语言中。

  使用STD:string;

  使用STD:wstring;

  或者

  使用命名空间std

  现在可以使用string/wstring,分别对应char和wchar_t。

  string和wstring的用法是一样的,下面仅以string为例介绍:

  类字符串的构造函数:

  string(const char * s);//用C字符串s初始化。

  string(int n,char c);//用n个字符c初始化。

  此外,string类还支持默认构造函数和复制构造函数,如strings1string s2= hello都写对了。当构造的字符串太长而无法表达时,将引发length_error异常;

  类字符串的字符操作:

  const char运算符[](int n)const;

  const char at(int n)const;

  char运算符[](int n);

  char at(int n);

  运算符[]和at()都返回当前字符串中第n个字符的位置,但是at函数提供范围检查,并在超出范围时抛出out_of_range异常。下标运算符[]不提供检查访问。

  const char * data()const;//返回一个非空终止的C字符数组

  const char * c _ str()const;//返回一个空终止的C字符串

  int copy(char *s,int n,int pos=0)const;//将当前字符串中以pos开头的N个字符复制到以S开头的字符数组中,并返回实际复制的数量。

  字符串的属性描述:

  int capacity()const;//返回当前容量(即在不增加内存的情况下,字符串中可以存储的元素数量)

  int max _ size()const;//返回string对象中可以存储的最大字符串的长度

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

  int length()常量;//返回当前字符串的长度

  bool empty()常量;//当前字符串是否为空

  void resize(int len,char c);//将字符串的当前大小设置为len,用字符c填充不足的部分。

  字符串类的I/O操作:

  类重载运算符operator用于输入,同一个重载运算符operator用于输出操作。

  getline(istream in,string)函数用于将输入流中的字符串读取到s中,由换行符“\n”分隔。

  字符串的赋值:

  String operator=(const string //将字符串S赋给当前字符串

  字符串赋值(const char * s);//用类型C字符串s赋值。

  string assign(const char *s,int n);//分配以C字符串s开头的n个字符的值。

  String assign(const string //将字符串S赋给当前字符串

  string assign(int n,char c);//将N个字符C赋给当前字符串

  string assign(const string s,int start,int n);//将字符串S中从开始的N个字符赋给当前字符串

  string assign(const_iterator在前,const_iterator在后);//将第一个和最后一个迭代器之间的部分赋给字符串

  字符串的连接:

  String operator=(const string //将字符串S连接到当前字符串的末尾

  字符串追加(const char * s);//将C类型字符串连接到当前字符串的末尾

  string append(const char *s,int n);//将C类型字符串S的前N个字符连接到当前字符串的末尾

  字符串追加(常量字符串//与运算符=()相同)

  string append(const string s,int pos,int n);//将字符串S中pos到当前字符串末尾的N个字符连接起来

  string append(int n,char c);//将N个字符C添加到当前字符串的末尾

  string append(const_iterator在前,const_iterator在后);//将迭代器第一个和最后一个之间的部分连接到当前字符串的末尾

  字符串的比较:

  弯曲件运算符==(常量字符串s1,常量字符串s2)常量;//比较两个字符串是否相等

  运算符 , ,=,=,!=均被重载用于字符串的比较;

  int比较(常量字符串s)常量;//比较当前字符串和s的大小

  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;//比较当前字符串从刷卡机开始的n个字符组成的字符串与s中

  //pos2开始的氮气个字符组成的字符串的大小

  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 pos 2)const;

  比较函数在时返回1, 时返回-1,==时返回0

  线的子串:

  string substr(int pos=0,int n=NPOs)const;//返回刷卡机开始的n个字符组成的字符串

  线的交换:

  无效交换(字符串S2);//交换当前字符串与s2的值

  线类的查找函数:

  int find(char c,int pos=0)const;//从刷卡机开始查找字符c在当前字符串的位置

  int find(const char *s,int pos=0)const;//从刷卡机开始查找字符串s在当前串中的位置

  int find(const char *s,int pos,int n)const;//从刷卡机开始查找字符串s中前n个字符在当前串中的位置

  int find(常量字符串s,int pos=0)常量;//从刷卡机开始查找字符串s在当前串中的位置

  //查找成功时返回所在位置,失败返回string:NPO的值

  int rfind(char c,int pos=NPOs)const;//从刷卡机开始从后向前查找字符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;

  //从刷卡机开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string:NPO的值

  int find_first_of(char c,int pos=0)const;//从刷卡机开始查找字符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(常量字符串s,int pos=0)常量;

  //从刷卡机开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string:NPO

  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(常量字符串s,int pos=0)常量;

  //从当前串中查找第一个不在串s中的字符出现的位置,失败返回string:NPO

  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(常量字符串s,int pos=npos常量;

  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(常量字符串s,int pos=npos常量;

  //find_last_of和查找最后一个不是的与find_first_of和find_first_not_of相似,只不过是从后向前查找

  线类的替换函数:

  字符串替换(int p0,int n0,const char * s);//删除从p0蛋白蛋白开始的没有个字符,然后在p0蛋白蛋白处插入串s

  string replace(int p0,int n0,const char *s,int n);//删除p0蛋白蛋白开始的没有个字符,然后在p0蛋白蛋白处插入字符串s的前n个字符

  字符串替换(int p0,int n0,const string //删除从p0蛋白蛋白开始的没有个字符,然后在p0蛋白蛋白处插入串s

  string replace(int p0,int n0,const string s,int pos,int n);//删除p0蛋白蛋白开始的没有个字符,然后在p0蛋白蛋白处插入串s中从刷卡机开始的n个字符

  string replace(int p0,int n0,int n,char c);//删除p0蛋白蛋白开始的没有个字符,然后在p0蛋白蛋白处插入n个字符c

  字符串替换(迭代器first0,迭代器last0,const char * s);//把[名字0,姓氏0]之间的部分替换为字符串s

  字符串替换(迭代器first0,迭代器last0,const char *s,int n);//用s的前N个字符替换[first0,last0之间的部分。

  String replace (iterator first0,iterator last0,const string//用字符串s替换[first0,last0]之间的部分。

  string replace(迭代器first0,迭代器last0,int n,char c);//用N个字符c替换[first0,last0之间的部分。

  字符串替换(iterator first0,iterator last0,const_iterator first,const _ iterator last);//将[first0,last 0]之间的部分替换为[first,last]之间的字符串

  类字符串的插入函数:

  字符串插入(int p0,const char * s);

  string insert(int p0,const char *s,int n);

  字符串插入(int p0,const string

  string insert(int p0,const string s,int pos,int n);

  //前4个函数将pos的前N个字符插入到字符串S的p0处。

  string insert(int p0,int n,char c);//此函数在p0处插入n个字符C

  迭代器插入(迭代器it,char c);//在该处插入字符C,并返回插入的迭代器的位置

  void insert(iterator it,const_iterator first,const _ iterator last);//在[first,last]之间插入字符

  void insert(迭代器it,int n,char c);//在它上面插入N个字符C

  字符串类的删除函数

  迭代器擦除(迭代器在先,迭代器在后);//删除[first,last]之间的所有字符,并返回被删除的迭代器的位置

  迭代器erase(迭代器it);//删除它所指向的字符,返回被删除的迭代器的位置。

  字符串擦除(int pos=0,int n=NPOs);//删除pos的前N个字符,返回修改后的字符串

  字符串类的迭代器处理:

  string类提供了向前和向后遍历的迭代器。迭代器提供了访问单个字符的语法,这类似于指针操作。迭代器不检查范围。

  使用string:iterator或string:const_iterator声明迭代器变量。不允许Const _ iterator更改迭代的内容。常用的迭代器函数有:

  const _ iterator begin()const;

  迭代器begin();//返回字符串的起始位置

  const _ iterator end()const;

  迭代器end();//返回字符串最后一个字符后的位置

  const _ iterator r begin()const;

  迭代器Rb egin();//返回字符串最后一个字符的位置

  const _ iterator rend()const;

  迭代器render();//返回字符串第一个字符位置的前面

  Rbegin和rend用于从后向前的迭代访问,通过设置迭代器string: reverse _ iterator,string: const _ reverse _ iterator实现。

  字符串流处理:

  通过在#include sstream的头文件中定义ostringstream和istringstream变量来实现。

  例如:

  字符串输入(‘你好,这是测试’);

  istringstream是(输入);

  字符串s1、s2、s3、S4;

  是s1 s2 s3 s4//s1=您好,这,s2=是,s3=a ,s4=测试

  ostringstream os

  os s1 s2 s3 s4

  cout OS . str();

  以上是对C字符串类的简单介绍。如果用得好,它的功能不会比MFC中的CString类逊色。呵呵,个人观点!

  最后,我们将介绍如何在Win32应用程序中引用MFC中的一些类,如CString。

  1.右键单击项目目录下的“属性”-“配置属性”-“常规”-“MFC的使用”-“在静态库中使用MFC”。

  默认值为:“使用标准Windows库”,如下图所示:

  2.在您使用的所有头文件之前包含#include afxwin.h。例如,可以在stdafx.h文件的前面包含#include afxwin.h头文件,以便可以在源代码中使用它。

  CString类,但这也有一个缺点,就是编译后的程序比原程序大很多。我尝试了一个小程序,通过选择“使用标准Windows库”来编译它

  的发布版本是92kb左右,用‘在静态库中使用MFC’编译的发布版本是192kb左右,大了100kb,所以这是我个人的考虑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: