string的构造函数的形式:

string str:生成空字符串

string s(str):生成字符串为str的复制品

string s(str, stridx):将字符串str中始于stridx的部分,复位构造函数的初值

string s(str, strbegin, strlen):将字符串str中始于strbegin、长度为strlen的部分作为字符串初值

string s(cstr):以C_string类型cstr作为字符串s的初值

string s(cstr, char_len):以C_string类型cstr的前char_len个字符串作为字符串s的初值


string str1;               //生成空字符串
string str2("1234");       //生成"1234"的复制品
string str3("12345", 1, 3);//结果为"234"
string str4("123456", 5);  //结果为"12345"
string str5(5, '1');       //结果为"11111"
string str6(str2, 2);      //结果为"34"

大小和容量:

  1. size()和length():返回string对象的字符个数,他们执行效果相同。

  2. max_size():返回string对象最多包含的字符数,超出会抛出length_error异常

  3. capacity():重新分配内存之前,string对象能包含的最大字符数

string s("1234567");
cout << "size=" << s.size() << endl;
cout << "length=" << s.length() << endl;
cout << "max_size=" << s.max_size() << endl;
cout << "capacity=" << s.capacity() << endl;

结果:

size=7
length=7
max_size=4294967294
capacity=15

compare() 函数,比较运算符:> , < , == , <=, >=

string A("aBcdef");
string B("AbcdEf");
string C("123456");
string D("123dfg");
int m = A.compare(B);
int n = A.compare(1, 5, B);
int p = A.compare(1, 5, B, 4, 2);
int q = A.compare(0, 3, D, 0, 3);
cout << "m=" << m << endl;
cout << "n=" << n << endl;
cout << "p=" << p << endl;
cout << "q=" << q << endl;result:
m=1
n=1
p=-1
q=1

assign()函数:直接给字符串赋值。

string str7("123456");
string str;
str.assign(str7);
cout << str << endl;
str.assign(str7, 3, 3);
cout << str << endl;
str.assign(str7, 2, str7.npos);
cout << str << endl;
str.assign(5, 'X');
cout << str << endl;
string::iterator itB = str7.begin();
string::iterator itE = str7.end();
str.assign(itB, --itE);
cout << str << endl << endl;
结果:
123456
456
3456
XXXXX
12345

erase():删除函数
sawp()函数:相互交换字符串
insert()函数:在字符串中某个位置插入其他字符串

str = "01234567";
str.insert(1, "abc");
cout << str << endl;//out:0abc1234567
str.insert(1, "edfg", 3);
cout << str << endl;//out:0edfabc123467
str = "01234";
str.insert(1, "abcde", 2, 3);
cout << str << endl << endl;//out:0cde1234

append()函数:在字符串最后面追加其他字符串。
replace()函数:用其他字符串替换字符串中的某个子串。
find()函数:从首部开始查找字符串,返回查找到的子串在字符串中的第一个字符的位置
rind()函数:从首部开始查找字符串,返回查找到的子串在字符串中的第一个字符的位置
find_first_of()函数:在源字符串搜索某字符串,返回被搜索字符串中第一个字符第一次出现的下标。
find_last_of()函数:功能同上,返回被搜索字符串中最后一个字符的下标。

string str = "hxh1323121678feifeihxhdian456";;
size_t index1 = str.find("hxh");
size_t index2 = str.find_last_of("hxh");
cout << index1 << "\t" << index2 << endl;
结果:
0       21

C++中string类相关推荐

  1. 标准C++中string类用法总结

    2019独角兽企业重金招聘Python工程师标准>>> 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好 ...

  2. 【持续更新】C++中string类使用总结

    C++中string类的功能以及使用方法可类比于C语言中的字符数组,但是相互比较之下可谓是是有过之而无不及,实在是太方便,故留此贴总结日常学习所得经验. 智障blog,排版这么难???? 1. 创建字 ...

  3. Java中String类的方法及说明

    String : 字符串类型 一.构造函数      String(byte[ ] bytes):通过byte数组构造字符串对象.      String(char[ ] value):通过char数 ...

  4. C++面试中string类的一种正确写法

    C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...

  5. STL库中string类内存布局的探究

    在STL中有着一个类就是string类,他的内存布局和存储机制究竟是怎么样的呢? 这就是建立好的string 可以看出,图中用黄色框框标注的部分就是主要区域 我们用来给string对象进行初始化的字符 ...

  6. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  7. c++ 输出string_来讲讲Java中String 类的知识点

    本文来总结一下Stirng 的有关知识点 1.String中的引用 String 可以通过new和构造方法来创建一个对象,用s来引用它(也就是相当于把asdf这个字符串赋值给s String s = ...

  8. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数      String ...

  9. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087 转载于 ...

  10. 深究Java中string类不能改变的原因

    说到不可变对象,大家想到的首先就是String类,但是,为什么String类不能改变,是大家所疑惑的,而且里面的误区也有很多,今天我们就来好好深究一下String类不能改变的原因吧! String不能 ...

最新文章

  1. 一款由css3和jquery实现的响应式设计导航
  2. 关于 htonl 和 ntohl 的实现
  3. hprose出现500: Internal Server Error
  4. 优雅地关闭资源,try-with-resource语法和lombok@Cleanup
  5. linux服务器的诗句迁移,使用scp命令在两台linux上对拷文件或者文件夹
  6. 怎么颈椎和秃头都扯上我,程序员:我太难了…
  7. 前端emojs_Emoji-Chat emoji表情包发送及显示兼容web端、移动端
  8. 斯坦福大学面向Tensorflow深度学习研究课程(2018)
  9. 在向服务器发送请求时发生传输级错误。
  10. Qt开发 之 Windows资源管理器模仿 并 小超越
  11. RS-485通信协议(ModBus版)
  12. 计算机错误1327,Win7系统电脑安装软件失败并提示错误1327解决办法
  13. 微信公众号客服咨询 php,微信公众平台开发之多客服模式-php语言(七)
  14. UniApp已经接了手机数据线,但运行工具警告 “没有检查到设备“ (华为手机为例 进行解决)
  15. vite项目(vue-ts)搭建常用插件引入方式
  16. 漏洞复现----6、Jenkins远程命令执行漏洞(CVE-2018-1000861)
  17. 上网课用哪种耳机好、长时间听网课耳机推荐
  18. 不用找,你想要的建筑场景游戏素材素材都在这里
  19. ubuntu wps缺少字体_一个字体:系统风汜霰汜源圆
  20. OpenCV-Python图像叠加

热门文章

  1. 空间滤波 - 钝化掩蔽和高提升滤波
  2. rdlc和rdl的区别
  3. 君澜再入宁波打卡孤岛式静谧度假;万达酒店联袂头部漫画APP快看打造国漫展 | 全球旅报...
  4. oracle数据库HugePages配置
  5. 虚拟机vm介绍及虚拟机常见操作
  6. WTL自绘界面库(CQsStatic)
  7. CodeBlocks调试教程
  8. OneNet平台创建应用
  9. gz是什么意思饭圈_网上看不懂的字母缩写!知道Xs是什么意思吗?不是尺寸!...
  10. 以太坊中的事件机制Feed