string综合运用


作者:Jennifer


touString.h文件

#ifndef STRING_H_INCLUDED
#define STRING_H_INCLUDED
/*
1.初始化 cin方法和scanf方法读入字符串
2.尾部追加字符或字符串 用+就行
3.插入字符 输入插入前位置和字符
4.删除 删除某位置 某区间 全部删除
5.替换字符(串)  输入替换的起始位置,输入要替换多少个字符,输入替换为什么
6.搜索子串 输出返回第一个相等子串的初始位置
7.比较 比较两个字符串是否一模一样
8.反向排序  字符串反向输出
9.显示  输出字符串
10.退出
*/
#include <iostream>
#include <string>
#include <stdlib.h>
#include <algorithm>
using namespace std;
string s;
void menu()
{
    cout<<"                 *********String用法*********                   "<<endl;
    cout<<endl;
    cout<<"     1.初始化                 2.尾部追加字符或字符串"<<endl;
    cout<<"     3.插入字符               4.删除 "<<endl;
    cout<<"     5.替换字符(串)           6.搜索子串"<<endl;
    cout<<"     7.比较                   8.反向排序"<<endl;
    cout<<"     9.显示                   10.退出"<<endl;
}
void xianshi()
{
    cout<<"当前字符串为"<<endl;
    cout<<s<<endl;
}

void chushihua()
{
    cout<<"请给字符串变量赋初值:"<<endl;
    cin>>s;
    xianshi();
}
void add()
{
    cout<<"请输入想给字符串变量后添加的字符或字符串:"<<endl;
    string sv;
    cin>>sv;
    s+=sv;
    //s.append(sv);
    xianshi();
}
void charu()
{
    string::iterator it;
    char sv;
    int n;
    cout<<"请输入想插入的位置(前插,且首字符位置为0):"<<endl;
    cin>>n;
    cout<<"请输入想插入的字符:"<<endl;
    cin>>sv;
    it = s.begin();
    s.insert(it+n,sv);
    xianshi();
}
void shanchu()
{
    int i,j,from,to;
    string::iterator it;
    it = s.begin();
    cout<<"1.清空整个字符串    2.清除某个位置的字符或字符串     3.清除某个区间的字符或字符串"<<endl;
    cin>>i;
    switch(i)
    {
    case 1:
        {
            s="";
            xianshi();
            break;
        }
    case 2:
        {
            cout<<"请输入想删除的位置(首字符位置为0):"<<endl;
            cin>>j;
            s.erase(it+j);
            xianshi();
            break;
        }
    case 3:
        {
            cout<<"请输入想删除的起始位置(首字符位置为0):"<<endl;
            cin>>from;
            cout<<"请输入想删除的结尾位置(首字符位置为0):"<<endl;
            cin>>to;
            if((from>0)&&(to<s.length())&&(from<=to))
                s.erase(from,to);
            else
                cout<<"输入有误!"<<endl;
            xianshi();
            break;
        }
    default:
        {
            cout<<"输入有误!"<<endl;
            break;
        }
    }
}
void tihuan()
{
    int from,to;
    string sv;
    string::iterator it;
    it = s.begin();
    cout<<"请输入想替换的起始位置(首字符位置为0):"<<endl;
    cin>>from;
    cout<<"请输入想替换的长度(首字符位置为0):"<<endl;
    cin>>to;
    cout<<"请输入想替换的字符:"<<endl;
    cin>>sv;
    if((from>=0)&&(from+to<=s.length())&&(from<=to))
        s.replace(from,to,sv);
    else
        cout<<"输入有误!"<<endl;
    xianshi();
}
void sousuo()
{
    string sv;
    cout<<"请输入想查找的字符或字符串:"<<endl;
    cin>>sv;
    if(s.find(sv)!=4294967295)
        cout<<sv<<"在字符串中的下标为"<<s.find(sv)<<endl;
    else
        cout<<"没有找到!"<<endl;
}
void bijiao()
{
    string s1,s2;
    cout<<"请输入想比较的字符或字符串1:"<<endl;
    cin>>s1;
    cout<<"请输入想比较的字符或字符串2:"<<endl;
    cin>>s2;
    if(s1.compare(s2)==1)
        cout<<"第一次输入大于第二次输入"<<endl;
    if(s1.compare(s2)==-1)
        cout<<"第一次输入小于第二次输入"<<endl;
    if(s1.compare(s2)==0)
        cout<<"第一次输入等于第二次输入"<<endl;
}
void fanxiang()
{
    reverse(s.begin(),s.end());
    xianshi();
}

void tuichu()
{
    exit(1);
}
#endif // STRING_H_INCLUDED


main.cpp

#include "multiset.h"

int main()
{
    int i;
    while(1)
    {
    menu();
    cout<<"请输入想实现的菜单编号:"<<endl;
    cin>>i;
    switch(i)
    {
    case 1:
        {
            insert();
            break;
        }
    case 2:
        {
            zhongxu();
            break;
        }
    case 3:
        {
            fanxu();
            break;
        }
    case 4:
        {
            shanchu();
            break;
        }
    case 5:
        {
            index();
            break;
        }
    case 6:
        {
            quit();
            break;
        }
    default:
        {
            cout<<"输入有误!"<<endl;
            break;
        }
    }
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值