在C语言中如果想要使用字符串那么有两种方法:

  1.定义char型数组:char[10]; 然后将每个字符填充到对应的位置。

    优点:这种方式将字符串放在内存所以每个位置都可以修改。

    缺点:赋值比较麻烦,需要预先定义好长度。

  2.定义char 型指针:char *str = "string test ";

    优点:赋值方便,不需要定义长度。

    缺点:字符串是一个常量,想要改变其中某个字符是不存在的。

以上两种方式都可以以数组的方式访问字符串中的某一个字符。然而字符串长度不定,内容也不确定的情况在开发中还是很经常遇到的,举个栗子就是文件的命名(用户二次开发的要求五花八门);使用C语言只能开一个比较大的char型数组来解决这个问题但是内心是极其不爽的。

C++ string类的牛逼之处:

  1.c++兼容c语言下的字符串的玩耍方式。

  2.string是一个类,那么它有自己的“方法”(函数),就是说它自带了求字符串长度、字符串转整型、查找字符等各种功能。

  3.字符串合并直接相加即可,想要在字符串后面加上什么直接 str += "abc"就搞定啦。

  4.不需要定义字符串长度可随意改变字符串内容。(这点很皮)

  5.想要将其他字符串拷贝过去直接用'='就搞定:str = str1;这样就将str1的内容拷贝给str了。

下面将用程序演示string类的好玩之处:  

#include <iostream>
#include <string>
using namespace std; void func(int num)
{
char arry[num];
int i;
for(i=;i<num;i++)
arry[i] = 'a';
arry[num-] = '\0';
cout<<arry<<endl;
} int main(int argc, char **argv)
{
string str1 = "abc";
string str2 = "def";
string str3;
cout<<"str1:"<<str1<<endl; cout<<str1+str2<<endl; str1[] = 'a';
cout<<"str1:"<<str1<<endl; cout<<"entry str3"<<endl;
cin>>str3;
cout<<"str3 :"<<str3<<"\nstrlen of str3 :"<<str3.size()<<endl; int num = ;
cout<<"entry arry num"<<endl;
cin>>num;
func(num);
system("pause");
return ;
}

   

1.代码66 行 将str1 与 str2直接相加可直接将其链接起来,类似C语言使用的strcat函数。当然也可以将两者相加的结果赋值给另一个string类

2.代码68行 直接修改str1中的某一个字符

3.代码72行 随机输入一个内容,长度不定的字符串string类可以很好的保存起来

4.代码73行 调用srting类size函数可计算出字符串长度

5.函数func()内可以定义一个数组,长度可以是一个变量这个在C语言中想想就好。数组字符串需要预留结束符 ’\0‘的位置那么

arry[2] == '\0'; 所以只输出了两个字符’a‘。

感受:

  俗话说编程语言没有优劣之分,各有千秋。但是C++ 的srting 类以及数组长度可用变量进行定义这两点用起来确实是比C语言方便很多。

最新文章

  1. 亚马逊云架设WordPress博客
  2. Amazon EC2免费VPS防止超额被扣钱三大方法:流量 硬盘读写 运行时长
  3. Android 6.0 新特性
  4. 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用
  5. 和我一起学python,初识python (life is short ,we need python)
  6. 用Filter程序实现静态HTML页面的访问保护
  7. JSBinding + SharpKit / 生成JavaScript绑定
  8. oracle:自定义多行合并聚合函数
  9. Pascal 语言中约瑟夫问题:幸运观众
  10. CSS Outlines
  11. DIV布局之道一:DIV块的水平并排、垂直并排
  12. VIm变成sublime (转)
  13. Windows Phone 8.1 发送http 网络请求。
  14. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
  15. 关于OC和Swift使用GIT创建项目
  16. ionic3中 ion-datetime 全屏可点击问题解决方案
  17. 使用VS Code开发asp.net core (上)
  18. python中的递归函数
  19. php 禁止屏蔽类
  20. ios --指纹TouchID

热门文章

  1. 跟踪记录ABAP对外部系统的RFC通信
  2. Django-Rest-Framework的权限和频率
  3. 命令行下载工具 wget
  4. Windows10家庭版升级至专业版
  5. net core (上)
  6. ML.NET 示例:目录
  7. python Fuction 方法的调用
  8. Redis特性之持久化机制
  9. 【转】HTTPS系列干货(一):HTTPS 原理详解
  10. I/O操做总结(二)