0

string

以前⽤用 char 的⽅方式处理理字符串很繁琐,现在有了了 string 类,定义、拼接、输出、处理理都更更加简单啦 不过 string 只能⽤用 cin 和 cout 处理理,无法⽤用 scanf 和 printf 处理:
使用 string 类首先要包含头文件 #include <string>

基本使用

  • 定义并初始化 :: details 示例代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    // 定义string变量但没有初始化,编译器赋值默认值 "",即空字符串
    string s1;
    // 定义并初始化,但与C语言风格不同,结尾没有结束标志"\0"
    string s2 = "oldmoon";
    //s2赋值给s3
    string s3 = s2;
    cout << "s2:" << s2 << endl;
    cout << "s3:" << s3 << endl;
    return 0;
}

运行结果:

s2:oldmoon
s3:oldmoon

是不是很简单!!! ::

输入输出方式

cin 跟 getline 均可输入

:: details 输入输出方式 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1,s2;
    cout << "请输入第一个字符串:";
    getline(cin,s1);
    cout << "请输入第二个字符串:";
    cin >> s2 ;
    cout << "第一个字符串是:" << s1 << endl;
    cout << "第二个字符串是:" << s2 << endl;
    return 0;
}

运行结果:

请输入第一个字符串:welcome oldmoon↙(表示输入结束)
请输入第二个字符串:welcome oldmoon↙
第一个字符串是:welcome oldmoon
第二个字符串是:welcome

:: tip 分析 getline 遇到换行停止,所以输入 welcome oldmoon,输出的也是 welcome oldmoon
cin 遇到空格停止,所以输入 welcome oldmoon,输出的是 welcome

:: tip 建议 cin 的代码会比 getline 简单一些,但是各有利弊,同学们在使用 string 的时候,根据题目需求进行选择哦~ ::

分割有间隔符的字符串行

如果使用 cin,默认下是以空格为间隔读取字符串。如果使用 getline,默认是读取整行字符串。 如果想要以自定义间隔符,如逗号,,或者其它符号,可以使用getline(cin,s1,',')的方式来读取。

:: details 输入输出方式 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1[5] = {};
    cout << "请输入一行字符串,不超过5个单词,以,为间隔:"<<endl;
    for(int i = 0; i < 5; i++){
        getline(cin,s1[i],&apos;,&apos;);
        cout<<s1[i]<<endl;
    }
    return 0;
}

:: tip 说明

getline(cin,s1[i],',')会以逗号,为间隔,读取每个单词到s1[i]

::

访问字符串中的字符

string 字符串也可以像 C 风格的字符串一样按照下标来访问其中的每一个字符。
string 字符串的起始下标仍是从 0 开始。

:: details 访问字符串 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s = "oldmoon";
    // s.length() 表示字符串的长度,不包含"\0",输出的是字符串的真实长度
    for(int i=0;i<s.length(); i++)
    {
        cout<<s[i]<<" ";
    }
    cout<<endl;
    cout<<s<<endl;
    return 0;
}

运行结果:

o l d m o o n
oldmoon

:: tip 建议
你们可以修改代码中的字符试试~

::

字符串的拼接

有了 string 类,我们可以使用+或+=运算符来直接拼接字符串

:: details 字符串拼接 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1 = "hello ";
    string s2 = "welcome ";
    string s3 = "oldmoon";
    string s4 = s1 + s3;
    string s5 = s2 + s3;
    cout<<"s4: "<< s4 << endl;
    cout<<"s5: "<< s5 << endl;
    return 0;
}

运行结果:

s4: hello oldmoon
s5: welcome oldmoon

:: tip 建议
你们也去试试吧~ ::

上一章
string
下一章
methods