2020年安徽省省赛H求问为什么内存读取越界?

(´∇ノ`*)ノ 2020-12-28 09:38:58
#include<iostream>
#include<string>
#include<vector>
#include<istream>
#include<sstream>
#include<stdlib.h>
using namespace std;
//字符串分割函数
vector<string> split(std::string str,std::string pattern)
{
std::string::size_type pos;
std::vector<std::string> result;
str+=pattern;//扩展字符串以方便操作
int size=str.size();
for(int i=0; i<size; i++)
{
pos=str.find(pattern,i);
if(pos<size)
{
std::string s=str.substr(i,pos-i);
result.push_back(s);
i=pos+pattern.size()-1;
}
}
return result;
}
int main(){
int maxlen=30;
int T;
string A[maxlen];
for(int i=0;i<maxlen;i++){
getline(cin,A[i]);
if(A[i].at(0)=='#'){
break;
}
}
cin>>T;
for(int i=1;i<maxlen;i=i+3){
if(A[i].at(0)=='#'){
break;
}
char c1=':';
string str1;
stringstream stream1;
stream1<<c1;
str1=stream1.str();
vector <string> result=split(A[i],str1);
/*int HH1=atoi(result[0]);
int MM1=result[1];
int MM2=result[3];*/




int HH1,MM1,SS1,TT1,HH2,MM2,SS2,TT2=0;
int HH1_,MM1_,SS1_,TT1_,HH2_,MM2_,SS2_,TT2_;
for(int i=0;i<result[0].length();++i){
HH1=HH1*10+result[0][i]-'0';
}
for(int i=0;i<result[1].length();++i){
MM1=MM1*10+result[1][i]-'0';
}
for(int i=0;i<result[3].length();++i){
MM2=MM2*10+result[3][i]-'0';
}
char c2='-';
string str2;
stringstream stream2;
stream2<<c2;
str2=stream2.str();
vector <string> result_=split(result[2],str2);
char c3=',';
string str3;
stringstream stream3;
stream3<<c3;
str3=stream3.str();
vector <string> result__=split(result_[0],str3);
for(int i=0;i<result__[0].length();++i){
SS1=SS1*10+result__[0][i]-'0';
}
for(int i=0;i<result__[1].length();++i){
TT1=TT1*10+result__[1][i]-'0';
}
char c4='>';
string str4;
stringstream stream4;
stream4<<c4;
str4=stream4.str();
vector <string> result2=split(result_[1],str4);
for(int i=0;i<result2[0].length();++i){
HH2=HH2*10+result2[0][i]-'0';
}
vector <string> result1=split(result[4],str3);
for(int i=0;i<result1[0].length();++i){
SS2=SS2*10+result1[0][i]-'0';
}
for(int i=0;i<result1[1].length();++i){
TT2=TT2*10+result1[1][i]-'0';
}
int m=TT1+T;
if(m>1000){
TT1_=m-1000;
int m1=SS1+m/1000;
if(m1>60){
SS1_=m1-60;
int m2=MM1+m1/60;
if(m2>60){
MM1_=m2-60;
HH1_=HH1+m2/60;
}
}
}
else if(m<=1000){
TT1_=m;
SS1_=SS1;
MM1_=MM1;
HH1_=HH1;
}
int n=TT2+T;
if(n>1000){
TT2_=n-1000;
int n1=SS2+n/1000;
if(n1>60){
SS2_=n1-60;
int n2=MM2+n1/60;
if(n2>60){
MM2_=n2-60;
HH2_=HH2+n2/60;
}
}
}
else if(n<=1000){
TT2_=n;
SS2_=SS2;
MM2_=MM2;
HH2_=HH2;
}
A[i]='HH1_:MM1_:SS1_,TT1_-->HH2_:MM2_:SS2_,TT2_';
}
for(int i=0;i<maxlen;i++){
cout<<A[i]<<endl;
if(A[i].at(0)=='#'){
break;
}
}
return 0;
}
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
(´∇ノ`*)ノ 2020-12-29
  • 打赏
  • 举报
回复
引用 1 楼 qq_33487700 的回复:
不知道你问的是什么。不过代码提个建议:字符串分割函数的返回值是vector时,不要直接用vector做返回值类型,这样效率很低的。可以把vector作为引用参数,这样效率更高。如下所示: bool split(std::string str,std::string pattern,vector<string>&result) { ...... }
H. 字幕校对 伴随着中国国产影视作品风靡国外,听不懂汉语的观众需要英文字幕的帮忙 才能理解影片故事情节。现在小喇叭接到了这样一个任务,他需要按照标准.STA 字幕格式的需要,对字幕文件进行编辑。标准英文字母格式如下: [Ordinal number of the block] [Beginning time of the subtitles --> Ending time of the subtitles] [Subtitle text in one or more lines] 每两个字幕信息之间用一行空行隔开。时间格式为HH:MM:SS,TTT(注意是英 文的冒号和逗号),表示 小时:分钟:秒,毫秒。 这是一个.STA格式文件的样例: 1 00:00:01,600 --> 00:00:04,200 Good day! 2 00:00:05,900 --> 00:00:07,999 Good day to you too! Here you go! 3 00:00:10,000 --> 00:00:14,000 May I please have ten garlic sausages? 由于影片播放时需要对原有视频进行编辑以适应播出时长,所以字母文件也 15 16 要做适当的调整,因此小喇叭的任务就是编写程序完成对字幕文件的编辑。 输入说明 每个测试样例最多不超过30行。第一行是字幕序号,第2行是按照.STA字幕 格式的时间信息,第3行开始时字母信息,可能有多行字幕。为了便于处理,字 幕中仅包含大小写字母和如下符号 ',.?!。('。'不含在内) 最后一个字幕信息块后是一个'#'号,表明本测试样例末尾。 '#'号之后是一个整数T(-10000<=T<=10000),表示需要对字幕文件中时间信息 进行调整的偏移量。 输出说明 按照给出的T(毫秒)编辑需求,调整字母文件中的时间信息(每个字幕块 中的开始和结束时间)。并将修改好时间的字幕文件打印出来。测试数据保证编 辑后的时间不会出现负值。 输入样例 8 00:00:01,600 --> 00:00:04,200 We thought you was... 9 00:00:05,900 --> 00:00:07,999 a toad. # 300 输出样例 8 00:00:01,900 --> 00:00:04,500 We thought you was... 9 00:00:06,200 --> 00:00:08,299 a toad. #
qq_33487700 2020-12-29
  • 打赏
  • 举报
回复
不知道你问的是什么。不过代码提个建议:字符串分割函数的返回值是vector时,不要直接用vector做返回值类型,这样效率很低的。可以把vector作为引用参数,这样效率更高。如下所示: bool split(std::string str,std::string pattern,vector<string>&result) { ...... }

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧