C++ 学习笔记(三)string 类
在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=0;i<num;i++) arry[i] = 'a'; arry[num-1] = '\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[1] = 'a'; cout<<"str1:"<<str1<<endl; cout<<"entry str3"<<endl; cin>>str3; cout<<"str3 :"<<str3<<"\nstrlen of str3 :"<<str3.size()<<endl; int num = 0; cout<<"entry arry num"<<endl; cin>>num; func(num); system("pause"); return 0; }
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语言方便很多。
上一篇: 人工智能热潮尴尬现状:资本、概念太多 创业者不够用
下一篇: iOS----------常见经典错误
推荐阅读
-
Java中字符数组、String类、StringBuffer三者之间相互转换
-
【学习笔记】第三方登录之GitHub篇
-
SQL学习笔记三 select语句的各种形式小结
-
Java中字符数组、String类、StringBuffer三者之间相互转换
-
Python面向对象编程中关于类和方法的学习笔记
-
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
-
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
-
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
-
Python面向对象编程中关于类和方法的学习笔记
-
SQL学习笔记三 select语句的各种形式小结