Skip to content

string

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

基本使用

  • 定义并初始化
    示例代码
cpp
#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;
}

运行结果:

c
s2:oldmoon
s3:oldmoon

是不是很简单!!! :::

输入输出方式

cin 跟 getline 均可输入

输入输出方式 示例代码
cpp
#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;
}

运行结果:

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

分析

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

建议

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

分割有间隔符的字符串行

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

输入输出方式 示例代码
cpp
#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;
}

说明

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

访问字符串中的字符

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

访问字符串 示例代码
cpp
#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;
}

运行结果:

c
o l d m o o n
oldmoon

建议

你们可以修改代码中的字符试试~

字符串的拼接

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

字符串拼接 示例代码
cpp
#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;
}

运行结果:

c
s4: hello oldmoon
s5: welcome oldmoon

建议

你们也去试试吧~