希望有人可以帮我解答一下。

幸福的二进制 2017-09-05 03:18:47
希望有大神可以看一下,我这个问题出在哪里,一运行就出现下面的结果。

简单说一下,我这个是读取文件夹里面所有子文件夹里面的txt文件。读出txt文件里面的特定的一个字符串。

#include <vector>
#include <string>
#include <fstream>
#include <iostream>
#include <istream>
#include <io.h>


using namespace std;
string sub_s;
void search(vector<string> & lines,string key);
void GetAllFormatFiles(string path,vector<string>& files,string format);
int main(int argc, char* argv[])
{

string filePath = "e:\\MP";
vector<string>files;
char * distAll = "AllFiles.txt";
string format = ".txt";
GetAllFormatFiles(filePath,files,format);
int size = files.size();
int i;
for( i = 0; i < size;i++)
cout << files[i] << endl;
ifstream in(files[i]);
if(!in)
{
cerr << "文件读取错误" << endl;
system("pause");
return 1;
}
vector<string>lines;
string line;
const char* target = "#START:CONNECTION_FASTBOOT_CHECK";
while(getline(in,line))
{
lines.push_back(line);
}
search(lines,target);
ofstream out ("2.txt",ios::app);
if(!out)
{
cerr << "failed " << endl;
system("pause");
return 1;
}
out << sub_s << endl;
return 0;


}

void search(vector<string> & lines,string key)
{
for(int i = 0;i < lines.size(); ++i)
{
if(lines[i].find(key) != string::npos)
{
sub_s = lines[i+1].substr(23,8);
cout << sub_s << endl;
}
}
}

void GetAllFormatFiles(string path,vector<string>& files,string format)
{
long hFile = 0;
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*"+ format).c_str(),&fileinfo)) != -1)
{
do
{
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,"." )!= 0 && strcmp(fileinfo.name,"..")!=0)
{
GetAllFormatFiles(p.assign(path).append("\\").append(fileinfo.name),files,format);

}
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
}
}while(_findnext(hFile,&fileinfo)==0);

_findclose(hFile);
}
}
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-09-05
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
angel6709 2017-09-05
  • 打赏
  • 举报
回复
for( i = 0; i < size;i++) cout << files[i] << endl; ifstream in(files[i]) 下面这个没有在for循环中,i已经=size越界
自信男孩 2017-09-05
  • 打赏
  • 举报
回复
引用 4 楼 hezhe1008 的回复:
ifstream in(files[i]); 这个i越界了
+++ ifstream in(files[i]);这句files[i];已经越界了。
呔妖怪来嘛 2017-09-05
  • 打赏
  • 举报
回复
ifstream in(files[i]); 这个i越界了
Really_want 2017-09-05
  • 打赏
  • 举报
回复
使用了空指针
幸福的二进制 2017-09-05
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
建议添加调试信息,逐步定位error出现的位置。
开始debug的时候就出现了这个。
自信男孩 2017-09-05
  • 打赏
  • 举报
回复
建议添加调试信息,逐步定位error出现的位置。

64,282

社区成员

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

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