C++学习笔记(二)string简介

c语言里面的字符串数组,以'\0'结束来保证字符串长度,而cpp里面的string类本身保证其长度,不以'\0'结尾,会导致一些操作和运算上的区别

1.字符串声明和初始化

①声明:字符串数组和cpp里面的string类

字符串数组声明方法:

char str1[size]; //size是预设字符串大小,大于或等于待存储字符串长度

string类声明方法:

#include<string>
using std::string;//必须包括的头文件和命名空间

int main()
{
    string str2;   //声明了一个str2字符串
}

②初始化:

//基本的c风格初始化
char str1[10] = "smart";
string str2 = "smart";
//初值列表初始化
char str3[10] {"smart"};
char str4[10] = {"smart"};
string str5 {"smart"};
string str6 = {"smart"};

2.字符串的读入

主要有cin、cin.getline()、cin.get()、getline();

①cin主要用于读入一个单词(word),无法跨越空白符

/******代码片段*****************/


string str1;
cin>>str1;
cout<<str1<<endl;//只会输出Jhon,且Black留在了输入队列

/******运行结果*********

Jhon Black
Jhon

***********************/

②cin.getline()和cin.get()

可以跨越空白符,且主要用于字符串数组的读入;

/******代码片段***********/

char str1[size];

cin.getline(str1,size);//读入一个小于等于size长度的字符串,可以跨越空白

                       //第二个参数不一定是size,可以小于size,但是要大于带输入字符串长度

cout<<str1;

/********运行结果***********

Jhon Black
Jhon Black

***************************/

/*********备注**********************

cin.get()和cin.getline()用法基本一致,
但是cin.get()会把结尾换行符留在输入队列
影响下一次输入

**************************************/

③getline()

cpp里面的string类包含的读入,需要using std::string才能使用;

/**************代码片段**************/

string str;

getline(cin,str);

cout<<str;


/************运行结果******************

Jhon Black
Jhon Black

**************************************/

/***********备注**********************

cin.getline()不适合读入string声明的字符串
因为长度未知,第二个参数无法确定,而且不能
按照输入字符串长度私自填入

**************************************/

3.字符串的赋值和运算

cpp的string声明的字符串允许将一个字符串赋给另一个字符串,允许字符串之间相加(+、+=、=);

#include<iostream>

#include<string>

using namespace std;

int main()
{
    string str1 {"smart"};

    string str2 = str1;//将str1赋值给str2

    string str3 = str1 + str2;//将str1和str2拼接起来

    cout<<str3;
}

/**********运行结果*********************

smartsmart

***************************************/

4.一些字符串常用函数

①strcpy()复制字符串【这是一个c函数,针对字符串数组使用,不能对string类使用使用时候要包含头文件<cstring>】

strcpy(str1,str2);  //等效于cpp中的string里面的操作str1 = str2;将2的值给1

#include<iostream>

#include<cstring>

using namespace std;

int main()
{
    char str1[10] {"smatr"};

    char str2[10] {"phone"};

    strcpy(str1,str2);//将str2给str1

    cout<<"str1 = "<<str1;
}

/**************运行结果***************

str1 = phone

************************************/

②strcat() 拼接字符串【这是一个c函数,针对字符串数组使用,不能对string类使用使用时候要包含头文件<cstring>】

strcat(str1,str2);//等效于 cpp里面string的操作str1 = str1 + str2;

#include<iostream>

#include<cstring>

using namespace std;

int main()
{
    char str1[10] {"smatr"};

    char str2[10] {"phone"};
    
    strcat(str1,str2);//将str1和str2拼接起来

    cout<<str1;
}

/*********运行结果***************

smartphone

*******************************/

③strlen()【这是一个c函数,针对字符串数组使用,不能对string类使用使用时候要包含头文件<cstring>】

len = strlen(str1);//计算字符串str1实际长度,不包含'\0',等效于cpp的len = str1.size();

#include<iostream>

#include<cstring>

#include<string>

using namespace std;

int main()
{
    int len1,len2;

    char str1[10] {"smatr"};

    string str2 {"phone"};

    len1 = strlen(str1);

    len2 = str2.size();

    cout<<"len1 = "<<len1<<endl<<"len2 = "<<len2<<endl;
}


/*************运行结果**************************

len1 = 5
len2 = 5

************************************************/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值