Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1970638
  • 博文数量: 610
  • 博客积分: 11499
  • 博客等级: 上将
  • 技术积分: 5511
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-12 19:27
文章分类

全部博文(610)

文章存档

2016年(5)

2015年(18)

2014年(12)

2013年(16)

2012年(297)

2011年(45)

2010年(37)

2009年(79)

2008年(101)

分类:

2012-08-06 17:14:27

原文地址:C++ string 的二三事 作者:glinuxi

  最近使用C++编写了一些小东西,发现自己在string方面比较差,今天总结一下。

 ## string对象的定义和初始化
     string类型支持长度可变的字符串,对于string的使用:#include using std::string
  
    1. string s1;            默认构造函数,s1为空串
    2. string s2(s1)         将s2初始化为s1的副本
    3. string s3("value")    将s3初始化为字符串字面值副本
    4. string s4(n,'c')      将s4初始化为字符'c'的n个副本
     批注:利用getline读取文本的整行,getline(输入流,string对象)
 ## string 对象的操作
     
  1. s.empty() 如果s为空串,则返回true,否则返回false
  2. s.size() 返回s中字符的个数
  3. s[n] 返回s位置为n的字符,位置从0开始计数
  4. s1+s2 将s1和s2连接成一个新的字符串,并且返回新生成的字符串
  5. v1==v2 比较v1和v2的内容,相等则返回true,否则返回false
  6. !=,<,<=,>,>= 保持惯有的含义
批注:在size()中返回的是,string::size_type类型;
 ## 构造string对象的其他方法
    对于string类几乎支持所有的构造函数,除了带有单个容器长度最为参数的构造函数    
  1. string s(cp,n) 创建一个string对象,它被初始化为cp所指向数组的前n个副本
  2. string s(s2,pos2) 创建一个string对象,它被初始化为一个已经存在的
  3. string s1(s2,pos,len) 创建一个string的对象,它被初始化为s2中从下表为pos开始的len个字符的副本
## 修改string对象的方法
    1、insert()                      :在string中插入值
    2、assign()                      :用于替换string的值
    3、erase()                       :删除string
    4、substr()                      :截取string部分字段
    5、append()                      : 在string后面添加值
    6、replace()                     :替换string的值
    7、find()                        : 查找字符[串]第一次出现的下标
    8、rfind()                       : 查找字符[串]最后一次出现的下标
    9、find_first_of(args)           : 查找args中任意字符的第一次出现
    10、find_last_of(args)           : 查找args中任意字符的最后一次出现
    11、find_first_not_of(args)      : 查找第一个不属于args的字符
    12、find_last_not_of(args)       : 查找最后一个不属于args的字符
    13、compare()                    : 比较两个string类型的对象

学习两三点:
  在C++中将string类型转化成为int 
     1、使用函数  atoi(const char *ptr )
               --- 扫描参数ptr字符串,检测到第一个数字或正负号时开始做类型转换,之后检测非数字或结束符号\0 时停止转换,返回整型
    需要头文件:#include
  2、使用stringstream;

  eg: stringstream ss;
      string str="12345";
      int val;
      ss<
      str>>val;
  3、使用boost中的函数:lexical_cast(var)
     
    eg: int val = boost::lexical_cast(string("123"));

阅读(664) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~