string类很好,我们一直都用它

一。string的构造函数

1. string(const char* s);
2. string(size_type n, char c); // 初使化为n个c
3. string(const string& str, string::size_type pos, length); // 从str的pos位置拷贝构造最多length长
4. string(const char* s, size_type n); // 从s拷贝n个字符,即使超过数组长度,也继续拷贝。
5. string(); // 空string
6. template<class Iter>
   string(Iter begin, Iter end); // 迭代器[begin, end)区间初使化

二。string与数组的输入比较

char   info[100];
string stuff;
cin >> info,                    cin >> stuff;
cin.getline(info, 100),  getline(cin, stuff);
两点区别:一是string的作为友元函数,是全局的,而数组的是类的成员函数;二是string的处理函数
可以动态调整长度,因此getline()中不需要指定读取的长度。
但是,string的最大长度受size_type约束,
如果读取的字符数超过最大长度,或超过可供分配的内存,则设置输入流的failbit。

三。其它成员变量和函数

string::size_type  // 与平台无关表示大小的值
string::npos = -1; // no positon,它是static const型,属于类,表示未找到或失败的意思

string重载了'>','<'等比较符号,能够进行string与string,char*之间的比较。
string.compare() // 功能强大,可以google其功能

string的查找:
size_type find(const string& str, size_type pos = 0) const // 从pos查找str,找到则返回str首次出现的索引,否则返回string::npos
size_type find(const char* s, size_type pos = 0) const // 同上
size_type find(const char* s, size_type pos = 0, size_type n) // 查找由s的前n个字符组成的子串,其余同上。
size_type find(char ch, size_type pos = 0) // 查找字符ch。

以下函数重载特征标与上面相同:
rfind()               // 查找最后一次出现的位置
find_first_of()       // 在字符串中查找参数中的任意一个字符首次出现的位置
find_last_of()        // 对比上面,最后一次出现
find_first_not_of()   // 对比2,任意一个不在参数中的字符,首次
find_last_not_of()    // 对比4,最后一次

// 容量
string.capacity()        // 分配的内存大小,动态调整写时分配的方法
string.reserve(int size) // 确保分配给size字节的内存,默认参数为0,但不强制缩小。
string.size()
string.length()          // 都返回长度,前者是为了与STL兼容
string.max_size()        // 可容纳的最大长度,不够用会抛出length_error异常
string.empty()           // 判断是否为空

// 元素存取
string[pos] = char     // STL的vector原理,不抛出异常,如果pos无效
char = string.at(pos)
string.at(pos) = char  // 如pos无效,则抛出异常

// 取子串
string1 = string.substr(pos, size) // 取子串

// string到char的转换
string.c_str()   // 返回一个以'/0'结尾的字符串,只读的
string.data()    // 仅返回头指针,结尾不加'/0',如果string为空,该指针不能解引用,只读的,但是上面和此处其实都可以更改(VC6)。因此是很危险的,能不使用不要使用,或者,最好拷贝出去再用。
string.copy(char*, size_type size, size_type pos = 0)   // 从string的pos处拷贝size个到char*中

// assign函数,赋值
string.assign() // 重载特征标类似于构造函数,很多中assign的方法。

// 交换
string.swap(string1) // 交换string内容

// insert(), erase(), clear(), 类似于STL

// string = "" ; 清空

// replace(),替换,也可用来删除! 类似于perl

// 添加
string += string1 / "xx" / char
string.append() // 多个特征标

// STL的迭代器
string::iterator iter;
iter = string.begin()~ string.end();
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值