以前⽤用 char 的⽅方式处理理字符串很繁琐,现在有了了 string 类,定义、拼接、输出、处理理都更更加简单啦
不过 string 只能⽤用 cin 和 cout 处理理,无法⽤用 scanf 和 printf 处理:
使用 string 类首先要包含头文件 #include <string>
#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;
}
运行结果:
是不是很简单!!!
::
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],',');
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;
}
运行结果:
:: 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 建议
你们也去试试吧~
::