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=;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语言方便很多。
C++ 学习笔记(三)string 类的更多相关文章
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- java学习笔记之String类
String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...
- MyBatis学习笔记(三) Configuration类
一.初探Configuration类 我们先来看一下MyBatis的XML配置文件的结构,(摘自mybatis.org) 下面这个是Configuration类的部分变量 一点不一样是不是??? 其实 ...
- (转)Qt Model/View 学习笔记 (三)——Model类
Model类 基本概念 在model/view构架中,model为view和delegates使用数据提供了标准接口.在Qt中,标准接口QAbstractItemModel类中被定义.不管数据在底层以 ...
- JVM学习笔记(三):类文件结构
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 实现语言无关性的基础是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,只与&quo ...
- java学习笔记5——String类常用方法
1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- LuoguP2323 [HNOI2006]公路修建问题 【最小生成树+二分】By cellur925
题目大意:给你\(n\)个点,\(m\)条边,每条边上有两个权值:一级和二级的.选\(n-1\)条边使这个图连通,并至少有\(k\)个一级边,求花费最多的一条边最小值及方案. 最大值最小,肯定会先想到 ...
- nginx反向代理解决跨域问题,使本地调试更方便
我们可能都会遇到一个这样的问题,线上环境是https://...,本地启动了项目,域名是localhost:8000等,本地想要访问线上的接口,直接在本地调试,却提示跨域,这个时候我们可以配置ngin ...
- 《SQL 进阶教程》 case:将已有编号方式转换为新的方式并统计
SQL 权威指南SQL 解惑在进行非定制化统计时,需要将已有编号方式转换为另外一种便于分析的方式进行统计需求 select case when name='哈尔滨' then '黑龙江' when n ...
- RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例
你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前 ...
- thymeleaf中th:attr用法以及相关的thymeleaf基本表达式
额,有人写的很好,我直接搬了 thymeleaf中th:attr用法 1.写死的单个属性值添加 th:attr="class=btn" 2.写死的多个属性值添加 th:attr=& ...
- kie-api 组件介绍
KieServices:kie整体的入口,可以用来创建Container,resource,fileSystem等 KieContainer: KieContainer就是一个KieBase的容器,可 ...
- 微信小程序tabBar显示问题
在微信小程序的开发中,我遇到疑惑如下: 在app.json中定义了多个pages,一般微信小程序启动的时候,自动加载pages下的第一个页面, "pages": [ ...
- 用canvas裁剪图片
var selectObj = null; function ImageCrop(canvasId, imageSource, x, y, width, height) { var canvas = ...
- 单个页面Request编码方式的改变,无需改动Web.config~
搞一个东西,从别人的接口接一段中文,URL传输,怎么都有乱码~~ 得到对方的编码方式是gb2312,于是用HttpUtility.UrlDecode(_smssend_content, System. ...
- rest_framework组件之认证,权限,访问频率
共用的models from django.db import models # Create your models here. class User(models.Model): username ...