C++ 字符串
新手处女帖,请多关照,不喜勿喷!本人学习的第一种编程语言为C++,这里以C++处理字符串为例,希望大家喜欢!
#include<iostream
#include<cstdio
#include<cstring //这里加不了反尖括号,不知道为什么
using namespace std;
stringm; ///将 mi 定义为一个字符串
struct n{
int T; ///处理 [] 内的整数(次数 )
string S; ///处理字符串
} a; ///用变量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.S+=m; ///连接N个字符串
}
else if(m=='[') /// 若字符串内有 [
{
a[++d].S=""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
a.T=0; ///一定要归零 否则无法应对连续括号
}
else if(m>='0' && m<='9')
{
a.T=a.T*10+m-'0'; ///a.T*10处理高次位上的数
}
else if(m==']')
{
for(int k=1; k<=a.T; k++) ///遇反括号a.T 已是整形且等于输入的整数 循环!
{
a.S+=a.S; ///将括号内这一层的字符串循环 a.T 遍 并与括号外一层合并为一个字符串
}
d--; ///合并为一个字符串后 减少一层
}
}
cout<<a.S; ///输出第0层字符串
return 0;
} 感谢分享 本帖最后由 WarWolf 于 2020-2-18 22:52 编辑
```
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
stringm; ///将 mi 定义为一个字符串
struct n
{
int T; ///处理 [] 内的整数(次数 )
string S; ///处理字符串
} a; ///用变量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.S += m; ///连接N个字符串
}
else
if(m == '[') /// 若字符串内有 [
{
a[++d].S = ""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
a.T = 0; ///一定要归零 否则无法应对连续括号
}
else
if(m >= '0' && m <= '9')
{
a.T = a.T + m - '0'; ///a.T10处理高次位上的数
}
else
if(m == ']')
{
for(int k = 1; k <= a.T; k++) ///遇反括号a.T 已是整形且等于输入的整数 循环!
{
a.S += a.S; ///将括号内这一层的字符串循环 a.T 遍 并与括号外一层合并为一个字符串
}
d--; ///合并为一个字符串后 减少一层
}
}
cout << a.S; ///输出第0层字符串
return 0;
}
```#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
stringm; ///将 mi 定义为一个字符串
struct n
{
int T; ///处理 [] 内的整数(次数 )
string S; ///处理字符串
} a; ///用变量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.S += m; ///连接N个字符串
}
else
if(m == '[') /// 若字符串内有 [
{
a[++d].S = ""; ///将这一位上的‘[’清除 并且进入下一层 注意:一定是 ++d 不是 d++!
a.T = 0; ///一定要归零 否则无法应对连续括号
}
else
if(m >= '0' && m <= '9')
{
a.T = a.T + m - '0'; ///a.T10处理高次位上的数
}
else
if(m == ']')
{
for(int k = 1; k <= a.T; k++) ///遇反括号a.T 已是整形且等于输入的整数 循环!
{
a.S += a.S; ///将括号内这一层的字符串循环 a.T 遍 并与括号外一层合并为一个字符串
}
d--; ///合并为一个字符串后 减少一层
}
}
cout << a.S; ///输出第0层字符串
return 0;
} WarWolf 发表于 2020-2-18 22:49
```
#include
#include
感谢编辑排版{:1_919:} 支持一下
页:
[1]