C++ string的使用

为了理解C++ string类的必要性,需要考虑C风格字符串的优势和劣势。
优势:

  • 很简单,底层使用了基本的字符类型和数组结构。
  • 量级轻,如果使用得当,只会占有所需的内存。
  • 很低级,因此可以按操作原始内存的方式轻松操作和复制字符串。
  • 能够很好地被C语言理解——为什么还要学习新事物?
    劣势:
  • 为了模拟一等字符串数据类型,需要付出很多努力。
  • 使用难度大,而且很容易产生难以找到的内存BUG。
  • 没有利用C++的面向对象特性。
  • 要求程序员了解底层的表示方式。

以上来自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';
    我觉得还是该多注意单引号和双引号

string常用的类函数
  • 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

接下来是有趣的东西


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容