IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 简单字符串 -> 正文阅读

[C++知识库]简单字符串

?

#include<bits/stdc++.h>
using namespace std;
int main(){
    string str ="123456789abcdefghiaklmn";

    for(int i=0;i<10;i++)   //把str看成一个字符串数组
        cout<<str[i]<<" ";
    cout << endl;

//find函数
    cout<<"123的位置:   "<<str.find("123")<<endl;
//输出:123的位置:   0
    cout<<"34在str[2]到str[n-1]中的位置:   "<<str.find("34",2)<<endl;
//输出:34在str[2]到str[n-1]中的位置:   2
    cout<<"ab在str[0]到str[12]中的位置:    "<<str.rfind("ab",12)<<endl;
//输出:ab在str[0]到str[12]中的位置:    9

//substr()函数
    cout<<"str[3]及以后的子串:"<<str.substr(3)<<endl;
//输出:str[3]及以后的子串:456789abcdefghijklmn
//若小于限制长度则报错
    cout<<"从str[2]开始的4个字符:"<<str.substr(2,4)<<endl;
//输出:从str[2]开始的4个字符:3456

//find()函数
    str.replace(str.find("a"), 5, "@#");
    cout<<str<<endl;
//输出:123456789@#fghiaklmn

//insert()函数
    str.insert(2, "***");
    cout<<"从2号位置插入: "<<str<<endl;
//输出:12***3456789@#fghiaklmn

//添加字符串:append()函数
    str.append("$$$");
    cout<<"在字符串str后面添加字符串:"<<str<<endl;
//输出: 12***3456789@#fghiaklmn$$$

//字符串长度
    cout<<str.size()<<endl;
    cout<<str.length()<<endl;

//交换字符串:swap()函数
    string str1="aaa",str2="bbb";
    swap(str1, str2);
    cout<<str1<<"  "<<str2<<endl;

//字符串比较函数:compare(),相等输出0,不等输出1
    cout<<str1.compare(str2)<<endl;
    if(str1==str2) cout <<"==";   //直接比较也行
    if(str1!=str2) cout <<"!=";

    return 0;
}

?

str1="12345678abcdefghi"
print(str1)      #输出:12345678abcdefghi
print(str1[3])   #输出:4
print(str1[2:5]) #输出:345       截取一部分,左闭右开
print(str1[:5])  #输出:12345
print(str1[2:])  #输出:345678abcdefghi
print(len(str1)) #输出字符串长度: 17

str2="***"
str3="abc"
#合并字符串:+
str12=str1+str2
print(str12)                 #输出:12345678abcdefghi***
#也可以这样合并字符串
print(''.join([str1, str2])) #输出:12345678abcdefghi***

str_list = list(str1)
str_list.insert(4, "***")     #在str1[4]插入
aa = ''.join(str_list)
print(aa)                     #输出:1234***5678abcdefghi

#重复输出
print(str2*2) #输出:******

#用\输出特殊符号
print("\\    \"    \n ")      #输出:\ "  换行

#查找子串
print(str3 in str1)           #输出:True
print(str3 not in str1)       #输出:False

str2,str3 = str3,str2         #交换
print(str2)                   #输出:abc

#比较
print(str2 == str3)           #输出:False
print(str2 != str3)           #输出:True

#str.find(str, beg=0, end=len(string))   指定范围查找
print(str1.find("345"))         #输出:2
print(str1.find("345", 10))     #输出:-1
print(str1.find("456", 2,20))   #输出:3

?

?

?

?

?

?

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int ans=0;
    while(cin >> s)   ans+=s.size();
    cout << ans;
    return 0;
}
 参考答案1
#include<bits/stdc++.h>
using namespace std;
int main(){
    char s[10];
    gets(s);
    int ans=0;
    for(int i=0;i<strlen(s);i++)    {
        if(s[i]>='A'&&s[i]<='Z')    ans++;
        if(s[i]>='a'&&s[i]<='z')    ans++;
        if(s[i]>='0'&&s[i]<='9')    ans++;
    }
    printf("%d",ans);
    return 0;
}

?

?

?

?

#include<bits/stdc++.h>
using namespace std;

int toi(string x){
    if(x == "I")   return 1;
    if(x == "V")   return 5;
    if(x == "X")   return 10;
    if(x == "L")   return 50;
    if(x == "C")   return 100;
    if(x == "D")   return 500;
    if(x == "M")   return 1000;
}

int main(){
    int n;     cin>>n;
    while(n--){
        string num; cin>>num;
        int ans=0;
        ans = toi(num.substr(num.length()-1,1));
        for(int i=num.length()-2; i>=0; i--){
            if(toi(num.substr(i,1)) >= toi(num.substr(i+1,1)))
                ans+=toi(num.substr(i,1));
            else
                ans-=toi(num.substr(i,1));
        }
        cout<<ans<<endl;
    }
    return 0;
}

?

?

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int t;
    cin>>s>>t;
    while(t--)
        for(int i=0;i<s.length()-1;i++)
            if(s[i]>s[i+1])    {
                s.erase(i,1);
                break;  
            }
    cout<<s<<endl;
    return 0;
 }

?

?

#include<bits/stdc++.h>
using namespace std;
const int N = 1e2 + 5;
bool a[N][N];            //地图,1表示有雷,0无雷
signed main(){
    int n , m; 
    cin >> n >> m;
    for(int i = 1 ; i <= n ; i ++)    //输入
        for(int j = 1 ; j <= m ; j ++){
            char c; 
            cin >> c;
            if(c == '*') a[i][j] = 1;
        }
    for(int i = 1 ; i <= n ; i ++){
        for(int j = 1 ; j <= m ; j ++){
            if(a[i][j] == 1) printf("*");    //是地雷
            else
                cout << a[i+1][j+1] + a[i+1][j-1] + a[i+1][j] + a[i][j+1] + a[i][j-1] + a[i-1][j+1] + a[i-1][j] + a[i-1][j-1];
        }
        cout << endl;
    }
    return 0;
}

?

?

#include<bits/stdc++.h>
using namespace std;

int c[27];        //密码表
bool s[27],t[27];  //密文和原信息对应的26个字母

int main(){
    string m,y,v;    //m:密文,y:原文,v:要解密的密文
    cin>>m>>y>>v;
    int num=0;       //破译的字母数量
    for(int i=0;i<m.size();++i){ //遍历密文
        if(!s[m[i]-'A'+1] && !t[y[i]-'A'+1]){ //这个字符还未解密
            c[m[i]-'A'+1] = y[i];             //解密
            s[m[i]-'A'+1] = t[y[i]-'A'+1] = true; //找到对应
            num++;
        }
        else if(c[m[i]-'A'+1] != y[i]) {     //冲突
            cout<<"Failed";
            return 0;
        }
    }
    if(num!=26){   //解密的不够26个字母
        cout<<"Failed";
        return 0;
    }
    for(int i=0;i<v.size();++i)  //输出
        printf("%c",c[v[i]-'A'+1]);
}

?

?

#include<bits/stdc++.h>
using namespace std;
char  mod[12] = "0123456789X"; //mod11后的十一个字符
int main(void){
  char a[14];
  gets(a);    //  cin>>a;
  int t = 0;
  for(int i = 0,j=1; i < 12; i++) {
    if(a[i] == '-')
        continue;
    t += (a[i]-'0')*j;
    j++;
  }
  if(mod[t%11] == a[12])
      cout<<"Right";
  else {
      a[12] = mod[t%11]; //识别码错误,计算正确的识别码
      puts(a);   //  cout << a;
  }
  return 0;
}

?

?

#include<bits/stdc++.h>
using namespace std;

int main() {
    string str;
    int p1,p2,p3 ;
    cin >> p1>>p2>>p3>>str;
    for(int i=0;str[i];i++){
        char be=str[i-1], af=str[i+1];
        char tmp=str[i];
        if(tmp=='-'&&af>be&&(be>='0'&&af<='9'||be>='a'&&af<='z')){ //处理'-'
            char j, p;
            if(p3==1)                             //维持顺序
                for(j=be+1; j<af; j++){
                    p = j;
                    if(p1==2) p=(p>='a')?p-32:p;  //如果是字母就转成大写
                    else if(p1==3) p='*';         //是否输出'*'
                    for(int k=0; k<p2; k++)       //输出p2个
                        printf("%c",p);
                }
            else                  //改为逆序
                for(j=af-1; j>be; j--){
                    p = j;
                    if(p1==2) p=(p>='a')?p-32:p;  //如果是字母就转成大写
                    else if(p1==3) p='*';         //是否输出'*'
                    for(int k=0; k<p2; k++)       //输出p2个
                        printf("%c",p);
                }
        }
        else          //其他情况:原样输出
            printf("%c",tmp);
    }
    return 0;
}

?

#include<bits/stdc++.h>
using namespace std;
char s[1050];
void maketree(int x,int y){
    if(y>x){
        maketree(x,(x+y)/2);
        maketree((x+y+1)/2,y);
    }
    int B=1,I=1;
    for(int i=0;i<=y-x;i++){
        if(s[x+i]=='1')  B=0;
        else if(s[x+i]=='0') I=0;
    }
    if(B)      cout<<'B';
    else if(I) cout<<'I';
    else       cout<<'F';
}
int main() {
    int n;
    cin>>n>>s;
    maketree(0,(1<<n)-1);
    return 0;
}

?

?

#include<bits/stdc++.h>
using namespace std;
#define N 100
int n;
int ans = 0;
string word[N];  //存单词
int vis[N];      //记录每一个单词被使用了几次

bool check(string s,string m,int k){  //判断是否能拼接。用substr实现
    int len = s.size();
    if(s.size()<k || m.size()<k) return false;
    if(s.substr(len-k,k) == m.substr(0,k))
                   //s的后k个和m的前k个相同,能拼接
        return true;
    return false;
}
bool check1(string s,string m,int k){  //判断:简单实现
    int lens = s.length();
    for (int i=0;i<k;i++){
        if(s[lens-k+i]!=m[i])
            return false;
    }
    return true;
}
string add(string s,string m,int k){  //拼接:用substr实现
    int len = m.size();
    s = s + m.substr(k,len-k);   //拼接,把m接到s上。
    return s;
}
string add1(string s,string m,int k){ //拼接:简单实现
    int len = m.size();
    for (int i=k;i<len;i++)
        s+=m[i];
    return s;
}
void dfs(string dragon){   //dragon:目前拼接好的龙串
    int len = dragon.size();
    ans = max(ans, len);
    for (int i=1;i<=n;i++){
        if (vis[i]>=2) continue;   //题目说每个单词最多用2次
        int k = word[i].size();
        for (int j=1;j<=k;j++)   //枚举拼接长度
            if (check(dragon,word[i],j)){
                string temp = dragon;
                temp = add(temp,word[i],j);
                vis[i]++;
                dfs(temp);
                vis[i]--;
            }
    }
}
int main(){
    cin >> n;
    for (int i=1;i<=n;i++) cin >> word[i];
    string first; cin >> first;
    dfs(first);  //用dfs搜索所有可能的拼接
    cout << ans << endl;
    return 0;
}

?

?

?

?

#include<bits/stdc++.h>
using namespace std;
int h[101][101];    //输入每个位置的高度
int z[6]={2,1,0,0,0,0},s[6]={6,6,6,6,5,4};
char c[1001][1001];    //最后的平面映射图
int maxx,maxy;         //平面图的最大行、列
char cube[10][10]={    //小立方体
"  +---+",
" /   /|",
"+---+ |",
"|   | +",
"|   |/",
"+---+",
};
void draw(int x,int y){            //立体图映射成平面图
    for(int i=5;i>=0;i--)          //立方体需要倒过来存
        for(int j=z[i];j<=s[i];j++){    //分别是这一行的宽度
            c[5-i+x][j+y]=cube[i][j];
            if(5-i+x>maxx) maxx=5-i+x;  //最大的右上角长宽
            if(j+y>maxy)   maxy=j+y;
        }
}
int main(){
    int n,m;   cin >>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=0;j<m;j++)
            cin>>h[i][j];                  //高
    for(int i=1;i<=n;i++)                  //长
        for(int j=0;j<m;j++)               //宽
            for(int k=0;k<h[i][j];k++)     //高
                draw((n-i)*2+1+3*k,(n-i)*2+1+4*j);  //计算每个位置的小立方体的左下角坐标
    for(int i=maxx;i>=1;i--)    {
        for(int j=1;j<=maxy;j++)
            if(c[i][j]==0)  cout<<".";
            else            cout << c[i][j];
        cout<<endl;
    }
}

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:05:39  更:2022-04-09 18:08:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:09:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码