c++ --string操作

顺序容器--额外的string操作

  除了顺序容器共同的操作之外,string类型还提供了一些额外的操作。这些操作中大致可以分为两部分:

  1. 提供string类和C风格字符出租之间的相互转换;

  2. 增加了允许我们用下标代替迭代器的版本。


构造string的其他方法

构造string的其他方法            
n,len2和pos2都是无符号值                                                                                                                           
string s(cp,n) s是cp 指向的数组中前n 个字符的拷贝。此数组至少应该包含n个字符
string s(s2,pos2) s是string s2 从下标pos2 开始的字符的拷贝。若pos2>s2.size(),构造函数的行为未定义。
string s(s2,pos2,len2)
s是string s2 从下标pos2 开始len2 个字符的拷贝。若pos2 > s2.size(),构造函数的行为未定义。不管len2 的值是多少,

构造函数至多拷贝s2.size()-pos2个字符。

  这些构造函数接受一个string 或一个const char* 参数,还接受(可选的)指定拷贝多少个字符的参数(pos2,len2)。

substr(pos,n) 操作

  substr操作返回一个string,它是原始string的一部分货全部的拷贝。可以传递给substr 一个可选的开始位置和计数值:

  string s("hello world");

   //返回一个string,包含s 中从pos 开始的n 个字符的拷贝。pos的默认值为0。n的默认值为s,size()-pos, 即拷贝从pos开始的所有字符

  string s1=s.substr(pos,n);

改变string的其他方法

修改string 的操作                               常用场景                                    
s.assign(args) 将s 中的字符替换为args 指定的字符。返回一个指向s 的引用 替换s 中的所有内容
s.append(args) 将args 追加到s末尾。返回一个指向s 的引用。 将新字符追加到s 末尾
s.insert(pos,args)
在pos 之前插入args 指定的字符。pos 可以使一个下标或一个迭代器。

接受下标的版本返回一个指向s 的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。

在给定位置之前插入新字符
s.replace(range,args)
删除s 中range 内的字符,替换为args 指定的字符。

range 或者是一个下标和一个长度,或者是一对指向s 的迭代器。返回一个指向s 的引用。


删除指定范围字符,并插入新字符

(新旧字符长度可以不一样长)

  新字符可以来自于:1. 另一个string;2. 一个字符指针(指向的字符数组);3. 一个花括号包围的字符列表。当字符来自于一个string 或一个字符指针时,我们可以传递一个额外的参数来控制是拷贝部分还是全部字符。例如,s.insert(0, s2, 0, s2.size());    //在s[0]之前插入s2 中s2[0] 开始的s2.size() 个字符。

  并不是每个函数都支持所有形式的参数。例如,insert 就不支持下标和初始化列表参数。类似的,如果我们希望用迭代器指定插入点,就不能用字符指针指定新字符的来源。

string 搜索操作

  string 类提供了6个不同的搜索函数,每个函数都有4个重载版本。每个搜索操作都返回一个string::size_type (无符号类型)值,表示匹配发生位置的下标。如果未找到,返回npos (初始化为-1)。

  

string 搜索操作  
s.find(args) 查找s 中args 第一次出现的位置
s.rfind(args) 查找s 中args 最后一次出现的位置
s.find_first_of(args) 在s 中查找args 中任何一个字符第一次出现的位置
s.find_last_of(args) 在s 中查找args 中任何一个字符最后一次出现的位置
s.find_first_not_of(args) 在s 中查找第一个不在args 中的字符
s.find_last_not_of(args) 在s 中查找最后一个不在args 中的字符

args 必须是以下形式之一

注意:第2个参数才表示位置,与前面改变string 的成员函数不一样
c, pos 从s 中位置pos开始查找字符c. pos 默认为0
s2, pos
从s 中位置pos 开始查找字符串s2。 pos默认为0

cp, pos
从s 中位置pos 开始查找指针cp 指向的以空字符结尾的C 风格字符串。

pos 默认为0

cp, pos, n
从s 中位置pos 开始查找指针cp 指向的数组的前n 个字符。

pos 和n 无默认值

 compare函数

  标准库string 类型提供了一组compare 函数,类似C 标准库的strcmp 函数,根据s 是等于、大于还是小于参数指定的字符串,s.compare(args) 返回0,正数或负数。

  根据参数的不同,compare函数有6个重载版本。具体args 形式参见c++ primer P327,表9.15.

数值转换

  新标准引入了多个函数,可以实现数值数据与标准库string之间的转换:

  具体转换函数,参见c++primer P328,表9.16.



c++ --string操作

时间: 2024-10-12 02:21:54

c++ --string操作的相关文章

【足迹C++primer】28、额外的string操作

额外的string操作 构造string的其他方法 //n, len2, pos2 都是无符号值 string s(cp, n) //s是cp指向的数组中前n个字符的拷贝.此数组至少应该包含n个字符 string s(s2, pos2) //s是string s2从下标pos2开始的字符的拷贝. string s(s2, pos2, len2) //s是s2从pos2开始Len2个字符 const char *cp="Hello World!!!"; //以空字符结束的数组 char

C++ string操作(转载)

1.string类的构造函数 1 string(const char * s); //用s字符串初始化 2 string(const string &s);//用string类的s初始化 3 string(int n, char c);//用n个字符c初始化 2.string类的字符操作 1: const char &operator[](int n)const; 2: const char &at(int n)const; 3: char &operator[](int

【转载】 C++ stl string 操作

总结一下C++中string的操作,来自〈C++ Primer〉第四版. 1. string对象的定义和初始化: 12345678910111213 string s1; //空串string s2(s1); //将s2初始化为s1的一个副本string s3("value"); //s3初始化并赋值string s4(n,"c"); //s4初始化,赋值为n个'c'string s5(b,e); //初始化s5为迭代器b,e范围内的副本string s6(cp);

python操作redis之String操作

# __author__ = 'STEVEN' import redis,time # 方式1,直接链接操作 # r = redis.Redis(host='192.168.43.22',port=6379) # r.set('name','lisi') # print(r.get('name').decode()) # 方式2,创建进程池 poll = redis.ConnectionPool(host= '192.168.43.22',port=6379) #选择进程池 r = redis.

C的字符串函数对应的C++ string操作

string是STL里的标准类,习惯了使用指针操作C的char *字符串,刚开始并不是很适应,主要原因是对string.h里的函数没有找到合适的C++替换方法,因此,对常用的sring.h里的函数替换说明如下: strcpy: str.substr() strncpy: str.substr(pos, n) strcmp: == strncmp: == strstr: str.find() strcat: str.append() strchr: str.find() strtok: 无对应函数

python string操作

#!/bin/python #-*- coding=utf-8 -*- import string print("hello,world") str1 = "       python是动态语言       " #打印str1原型 print(str1) #打印去掉两边空格 print(str1.strip()) #字符串大小写转换 str2="abcd EFG,this is a TEST" print(str2.lower()) #小写 pr

Redis的String操作

set key value [ex 秒数] / [px 毫秒数] [nx] /[xx] 如: set a 1 ex 10 , 10秒有效 Set a 1 px 9000 , 9秒有效 注: 如果ex,px同时写,以后面的有效期为准 如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒 nx: 表示key不存在时,执行操作 xx: 表示key存在时,执行操作 127.0.0.1:6379> set site www.so.com OK 127.0.0.1:6379> se

3.redis对string操作

1.清空数据库的keys flushdb 2.创建key时同时设置有效期,ex代表秒.px代表毫秒,如果两个都写不能同时生效,以后面px有效期为准 set site www.baidu.com ex 10 3.创建key时,xx代表存在key时进行操作:nx代表不存key在时进行操作 4.一次性创建多个key mset a amon b boring c char d double 5.一次性获取多个key的值 mget a b c 6.替换,从第三个参数的位置+1开始,对key的值依次向右替换

Spring RedisTemplate操作-String操作(2)

@Autowired @Resource(name="redisTemplate") private RedisTemplate<String, String> rt; public void flushdb(){ rt.execute(new RedisCallback<Object>() { public String doInRedis(RedisConnection connection) throws DataAccessException { con