吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1241|回复: 4
收起左侧

[C&C++ 原创] C++ 字符串

[复制链接]
Bluezzz 发表于 2020-2-15 12:00
新手处女帖,请多关照,不喜勿喷!
本人学习的第一种编程语言为C++,这里以C++处理字符串为例,希望大家喜欢!

include  <iostream

include  <cstdio

include  <cstring //这里加不了反尖括号,不知道为什么

using namespace std;

string  m; ///将 mi 定义为一个字符串

struct n{
int T; ///处理 [] 内的整数(次数 )
string S; ///处理字符串
} a[30]; ///用变量a表示‘[’与‘]’的层数,由于正反括号数组开20就够了

int main() {
int d = 0; ///d表示层数
cin>>m;
for(int i=0; i<=m.size()-1; i++) ///字符串读入从 0 开始,循环时一定减 1
{
if(m[i]>='A' && m[i]<='Z') ///A~Z之间直接连其间字符串
{
a[d].S+=m[i]; ///连接N个字符串
}
else if(m[i]=='[') /// 若字符串内有 [
{
a[++d].S=""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
a[d].T=0; ///一定要归零 否则无法应对连续括号
}
else if(m[i]>='0' && m[i]<='9')
{
a[d].T=a[d].T10+m[i]-'0'; ///  a[d].T10  处理高次位上的数
}
else if(m[i]==']')
{
for(int k=1; k<=a[d].T; k++) ///遇反括号  a[d].T 已是整形且等于输入的整数 循环!
{
a[d-1].S+=a[d].S; ///将括号内这一层的字符串循环 a[d].T 遍 并与括号外一层合并为一个字符串
}
d--; ///合并为一个字符串后 减少一层
}
}
cout<<a[0].S; ///输出第0层字符串
return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

江沉晚吟时. 发表于 2020-2-15 14:30
感谢分享
WarWolf 发表于 2020-2-18 22:49
本帖最后由 WarWolf 于 2020-2-18 22:52 编辑
#include  <iostream>
#include  <cstdio>
#include  <cstring>

using namespace std;

string  m; ///将 mi 定义为一个字符串

struct n
{
    int T; ///处理 [] 内的整数(次数 )
    string S; ///处理字符串
} a[30]; ///用变量a表示‘[’与‘]’的层数,由于正反括号数组开20就够了

int main()
{
    int d = 0; ///d表示层数
    cin >> m;
    for(int i = 0; i <= m.size() - 1; i++) ///字符串读入从 0 开始,循环时一定减 1
    {
        if(m[i] >= 'A' && m[i] <= 'Z') ///A~Z之间直接连其间字符串
        {
            a[d].S += m[i]; ///连接N个字符串
        }
        else
            if(m[i] == '[') /// 若字符串内有 [
            {
                a[++d].S = ""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
                a[d].T = 0; ///一定要归零 否则无法应对连续括号
            }
            else
                if(m[i] >= '0' && m[i] <= '9')
                {
                    a[d].T = a[d].T + m[i] - '0'; ///  a[d].T10  处理高次位上的数
                }
                else
                    if(m[i] == ']')
                    {
                        for(int k = 1; k <= a[d].T; k++) ///遇反括号  a[d].T 已是整形且等于输入的整数 循环!
                        {
                            a[d - 1].S += a[d].S; ///将括号内这一层的字符串循环 a[d].T 遍 并与括号外一层合并为一个字符串
                        }
                        d--; ///合并为一个字符串后 减少一层
                    }
    }
    cout << a[0].S; ///输出第0层字符串
    return 0;
}
#include  <iostream>
#include  <cstdio>
#include  <cstring>

using namespace std;

string  m; ///将 mi 定义为一个字符串

struct n
{
        int T; ///处理 [] 内的整数(次数 )
        string S; ///处理字符串
} a[30]; ///用变量a表示‘[’与‘]’的层数,由于正反括号数组开20就够了

int main()
{
        int d = 0; ///d表示层数
        cin >> m;
        for(int i = 0; i <= m.size() - 1; i++) ///字符串读入从 0 开始,循环时一定减 1
        {
                if(m >= 'A' && m <= 'Z') ///A~Z之间直接连其间字符串
                {
                        a[d].S += m; ///连接N个字符串
                }
                else
                        if(m == '[') /// 若字符串内有 [
                        {
                                a[++d].S = ""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
                                a[d].T = 0; ///一定要归零 否则无法应对连续括号
                        }
                        else
                                if(m >= '0' && m <= '9')
                                {
                                        a[d].T = a[d].T + m - '0'; ///  a[d].T10  处理高次位上的数
                                }
                                else
                                        if(m == ']')
                                        {
                                                for(int k = 1; k <= a[d].T; k++) ///遇反括号  a[d].T 已是整形且等于输入的整数 循环!
                                                {
                                                        a[d - 1].S += a[d].S; ///将括号内这一层的字符串循环 a[d].T 遍 并与括号外一层合并为一个字符串
                                                }
                                                d--; ///合并为一个字符串后 减少一层
                                        }
        }
        cout << a[0].S; ///输出第0层字符串
        return 0;
}
 楼主| Bluezzz 发表于 2020-2-19 07:55
碧天澈水 发表于 2020-2-19 12:47
支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 21:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表