字符串类

使用时需要包含头文件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;
}

发表评论