C++学习第四弹之复合类型3

116 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

string类

上一节我们介绍了使用数组来操作字符串,这一节我们将一起来了解string类。 string类操作字符串更加简单。使用string类必须要使用<string>头文件。string类的函数名称位于std中,使用常见的using namespace std;这条命令就可以省略std::string这种引用方式了。

初始化

#include<iostream>
#include<string>
int main(){
using namespace std;
string str1;
string str2;
string str3;
str2="string";
str3={"str3"};
cout<<"请输入一共字符串:"<<endl;
cin>>str1;
cout<<“字符串str1”<<str1<<"endl";
cout<<"字符串str2"<<str2<<endl;
cout<<"字符串str3"<<str3<<endl;
return 0;
}

从上述代码我们可以发现使用string类来定义字符串时候可以简单直接的输入不必像使用字符数组那样需要先定义数组的长度。string定义的变量长度是可以自动调整的。

拼接

使用string类与字符串数组相比大大简化了操作流程。使用数组时候不能直接将一个数赋值给另一个数组,使用string定义的字符变量可以直接使用=进行赋值。同时与数字相加类似,可以使用+不过不同之处在于他实现了字符的拼接。代码示例如下:

       string str1="123";
       string  str2;
       string  str3;
       str2=str1;
       str3=str1+str2;
       str1+=str1+str2;
       int len1=str1.size();
       int len2=str2.size();
       int len3=str3.size();

上述代码定义了一个初始化的字符串str1,然后把他赋值给str2,再把str1和str2拼接赋值给str3,最后把str1和str2拼接重新赋值给str1。上一节我们讲过的strlen()函数无法应用于string类的变量,好在我们有size()函数,只要在string类变量后面跟上一共size()就能得到字符串的长度。

getline()函数

string类变量在读取一行而不是一共单词时候,和字符串数组使用一个函数getline(),只不过细节上面有些不同,具体使用如下:

#include<iostream>
#include<string>
#include<cstring>
int main(){
   using namespace std;
   char ch[50];
   string str;
   cin.getline(ch,20);
   cin.getline(cin,str);
   cout<<ch<<endl;
   cout<<str<<endl;
   return 0;
}

  

在使用getline函数时候字符数组包含了数组长度和数组变量,而string变量使用getline函数第一个是cin然后才是变量名并且没有长度限制.在这里其实getline不是同一个函数,不过我们没有必要深入研究,只需要记住使用区别就可以。