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],',');
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
建议
你们也去试试吧~