笔记:
//文件读写。再读取按钮调用
UINT MyThreadFunction(LPVOID pParam) //Thread线程操作 字符串处理存入map容器
{
CString szLine = "";//保存每行数据信息
CStdioFile file;//存储打开的文件数据
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);
fileDlg.m_ofn.lpstrTitle = _T("请打开你想要阅读的文件");
//fileDlg.m_ofn.lpstrFilter = _T("TcRt Files(*.txt)\0*.txt\0A11 Files(*.*)\0*.*\0\0");
//ofstream fout("C:\\Users\\Bin\\Desktop\\b.txt");
if (IDCANCEL == fileDlg.DoModal())
{
return 0;
}
strPath = fileDlg.GetPathName(); //获取文件名字 路径
file.Open(strPath, CFile::modeRead);//以只读方式打开文件
while (file.ReadString(szLine))//逐行读取字符串
{
string str = szLine.GetBuffer();//字符缓冲流读取
vector<string> v1 = split(str, "\""); //分隔符
if (v1[1].size() != NULL || v1[3].size() != NULL ) //拿到无任何操作的GET 跟 HTTP
{
//http.Format("%s \t %s", v1[1].c_str() ,v1[3].c_str()); //拼接起来
GetNew.insert(GetNew.end(), v1[1].c_str()); //这里存的一整段的
GetHttp.insert(GetHttp.end(), v1[3].c_str()); //这里存的一整段的
}
//map去重统计操作 这里操作的
string word;
if (v1[1].size()!= NULL)
word = v1[1].c_str();
++word_count[word];//循环存进容器带排序 主要
// GetOld.push_back = word_count;
}
if (WAIT_OBJECT_0 == WaitForSingleObject(MyThreadFunction, INFINITE)) // 收到激发态的消息
{
return 0;//正常退出
}
MessageBoxTimeoutA(NULL, "容器存完,3秒后自动关闭", "tishi", MB_OKCANCEL, 0, 3000);
CWinThread *MyThread1 = AfxBeginThread(My_Thread, NULL, THREAD_PRIORITY_NORMAL, 0, 0, NULL); //创建线程
file.Close();//关闭文件
return 0;
}
//线程必须再函数前面可以声明也可以直接再函数前面完成。因为我使用的是工作线程,所以界面线程不多说;
void CSiteAanalysisDlg::readFile()
{
//直接套用就可以,第二个参数好像可以传参进去。但是没用过他,留记录,第一个参数名字 必须与要执行的线程函数相同
CWinThread *MyThread3 = AfxBeginThread(MyThreadFunction, NULL, THREAD_PRIORITY_NORMAL, 0, 0, NULL); //创建线程
}
小白工作。记录工作使用的东西;