C++ string类入门

C一直是用数组存储字符串,有一说一真的很烦,我们可爱的C++小天使给我们带来了一种方式,
能更方便的处理字符串。

准备

头文件 string
另外string在std命名空间内部,和cout、cin相同,
如果没有**use namespace std;**就需要写成std::string的格式

相同和不同(string和数组)

  1. 首先,在定义和初始化上,感觉上是差不多的
    char a[20] = “abcd”;
    string a = “abcd”;
  2. 在数组a中,a[3]是这样调用的,在str的字符串类里面,str[3]也有相同的含义。
  3. string类也可以当作一种char数组,但是长度不需要你来处理。(芜湖,起飞)
  4. 这里说明一下,string类的初始长度是0,而字符串数组的初始长度看’\0’的位置,这个是不一定的,甚至可能比你定义的数组长度还长
  5. 在赋值上,数组a不能直接赋值给数组b,但是字符串可以。
    ”更过分“的是,在string类里面,合并两个string只需要一个‘+‘就可以完成了!,还支持str1+=str2。
    (strcpy、strcat:我不要面子的吗)
    不但不要,还不靠谱,有时候如果strcat的结果太长了原来的数组可能放不下,造成越界等后果,而string可以自己调整长度,就没那么多问题。
  6. 求长度
    数组的话,strlen(array); 函数返回长度,整形;
    而对string类, str1.size()就可以完成任务了。(这里str1是对象,size是类方法,所以格式才是这样的)
  7. 按行读取数组有两个cin的istream对象,getline和get,string类有所不同,getline(cin,str);

原始字符串

这个感觉有点不好理解,先给一个例子:(直接嫖人家C++ primer Plus的例子了)
cout<< R"(Jim “King” Tutt uses “\n” instead of endl.)"<<’\n’;
输出结果:Jim “King” Tutt uses “\n” instead of endl.
啥意思?就是不需要考虑转移字符的问题,该啥就输出啥,不然“、\n之前都要加一个’’ 。
结构:R+"( ……)";R为前缀, “( 和 )” 是边界。
有一些人就会想,如果我输出一个 )" ,是不是就直接结束了。确实如此。
所以呢,为了解决这个问题,” 和( 之间可以添加任意数量的基本字符,如 “-+( 和 )-+”,但同样两边相同而不是对称。
:空格、左右括号、斜杠和控制字符(制表符、换行符等)不行。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值