使用时需要包含头文件string
,下面是使用的几种方式
string sl; sl="hello world"; string s2="hello world"; string s3("hello world"); string s3(6,'a');
1.访问字符串中的字符
string类冲在了“[]”运算符,可以通过所用等方式访问和操作字符串中指定位置的字符
string s="hello,world"; s[9] = '\0';
于是变成了hello word
2.字符串的连接
使用+就行
string s1,s2; sl="超你妈"; s2="雷雨lyy"; cout<<s1+s2<<endl;
3.字符串的比较
直接调用> < ==
即可
string s1,s2; cin>>s1>>s2;//比较两个字符串内容是否相同 if(s1>s2) cout<<"字符串s1大于s2"<<endl; else if (s1<s2) cout<<"字符串s2大于s1"endl; else cout<<"字符串s1与s2相等"<<endl;
4.字符串的长度计算
使用length获取字符串长度,其中不计算“/0”,因此计算s字符串时,长度为9
string s = "hello world"; cout<<"length():"<<s.length()<<endl;
5.字符串交换
使用函数swap(),但是只能交换string类型的字符串
string s1="hello world"; string s2="nie mama de"; s1.swap(s2); swap(s1,s2);
典例
一
题目描述
使用string类,对英文人名的字符串处理。
若一个人的姓名有 4 个单词,输入 4,以及这 4 个单词。
输出3行:
第一行:4 个单词,全部字母大写,单词用空格隔开。
第二行:字符总数。
第三行:姓名缩写,取每个单词的首字母大写。
输入
数字 n (n<1000),以及连续 n 个单词
如:(司马相如)
4 SI MA xiang ru
输出
第一行:n 个单词,全为大写,空格隔开。
第二行:n 个单词的字符总数。
第三行:n 个单词的首字母连续。
如:
SI MA XIANG RU
11
SMXR
样例输入
3 liu yOU ji
样例输出
LIU YOU JI 8 LYJ
#include <iostream>
#include <string>
#include <cctype> // 包含 toupper 函数
using namespace std;
int main()
{
int n;
cin >> n;
string name, abbr;
int len = 0;
for (int i = 0; i < n; i++)
{
cin >> name;
for (char& c : name)
{
if (islower(c)) c = toupper(c);
}
cout << name << " ";
len += name.length();
abbr += toupper(name[0]);
}
cout << endl << len << endl << abbr << endl;
return 0;
}
二
题目描述
使用 string,进行姓氏字符串排序,升序输出。输入
第一行: N (3<N<100)
第 2 ~ N+1 行:每行一个单词
输出
N 个单词按字典顺序输出。样例输入
4 tom jack zhang liu
样例输出
jack liu tom zhang
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
string s[n];
for (int i = 0; i < n; i++)
{
cin >> s[i];
}
sort(s, s + n);
for (int i = 0; i < n; i++)
{
cout << s[i] << endl;
}
return 0;
}