C++|C++ string的使用
为了理解C++ string类的必要性,需要考虑C风格字符串的优势和劣势。
优势:
- 很简单,底层使用了基本的字符类型和数组结构。
- 量级轻,如果使用得当,只会占有所需的内存。
- 很低级,因此可以按操作原始内存的方式轻松操作和复制字符串。
- 能够很好地被C语言理解——为什么还要学习新事物?
劣势: - 为了模拟一等字符串数据类型,需要付出很多努力。
- 使用难度大,而且很容易产生难以找到的内存BUG。
- 没有利用C++的面向对象特性。
- 要求程序员了解底层的表示方式。
- string str1("abcd");
- string str2(5, 'a');
复制5个a,注意使用单引号。而有趣的是string str2(5,'abc'); 则会出现5个c;
- string str3("abcdefghijk",3);
str3取abc;
- string str4 ( "abcdefghijk",3,5);
从第4个字符开始取5个字符,不足4个字符取空,多过4个少于9个时从第4个到最后一个。
- string str = "abcdefghijk";
str.substr(3,5); //与上面类似
注:对于原始字符串来说
string str = "Hello "World"!";
string str = R"(Hello "World"!)"
那么对于字符中出现)"这个字符可以使用以下方式
string str =R"-(the characters )" are......)-"
- string str2(str1)
- string str1 = "abc";
string str2 = str;
- assign用于赋值,拷贝的string的类函数
string str1("abcdefgh"); string str2;
str2.assign(str1,3); //取前三个字符赋值给 str2
str2.assign(str1,3,2); //取第三之后的2个字符
- string str ="abcdefg";
char ch1 = str[2];
- char ch2 = str.at(2);
//越界后,能够抛出异常被捕获
- 修改字符
str[3]='z';
str.at(4)='x';
我觉得还是该多注意单引号和双引号
- int lenth =str.length();
//返回字符串长度,不包含‘\0'
- int strSize = str.size();
//同length
- bool flag = str.empty();
//判断是否为空
- compare比较字符,按照字典顺序,比较大小,大于返回1,小于返回-1;等于返回0;
string str1 ="abc";
string str2 = "xyz"
char *ch = "omg";
int i =str2.compare(str1);
int j = str2.compare(ch);
- 字符串的增
str+=str1;
str+=ch;
str.append("xyz");
str.append("xyz",3);
str.append("xyz",1,2); //在字符后面添加了xy
- 字符串的插入
str.insert(1,"xxx");
str.insert(1,str1);
str.insert(1,3,'x'); //复制3个x增加在第一位后面,注意单引号
- 字符串的删除
str.erase(2,3)//从第三位开始删除3个字符
- 字符串的替换
str.replace(1,2,"-------"); //从第1个后面的2个字符替换-------;
- 字符串的交换
swap(str1,str2);
str.swap(str2);
str.find('c'); //寻找c的位置,如果没有寻找到则赋值为-1;
str.find('c',2); //从下标为2开始寻找c,如果没有寻找到则赋值为-1;
str.find(ch);
关于查找函数可以看
http://blog.csdn.net/sr_19930829/article/details/21476287
string函数可以看
http://blog.csdn.net/qiulanzhu/article/details/50450424
【C++|C++ string的使用】接下来是有趣的东西
文章图片
image.png
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量