一、把QQ群的聊天记录txt格式导出

消息管理器 -> 选择要导出的群 -> 右击、导出
 
这里要注意 : 导出之后的 文本是 unicode 编码的,需要转换 ==|| 之前不知道,搞了大半天。
重新建一个txt , 把原来的 txt 内容 复制 到 新的 txt ,保存就行了。
 

二、详细代码

1. head.h

 #ifndef TxtSearch
#define TxtSearch #include<string>
#include<map>
#include<set>
#include<iostream>
#include<vector>
#include<fstream>
#include<sstream>
#include<ctype.h> typedef unsigned char BYTE;
typedef unsigned short WORD; bool IsChineseChar(WORD DoubleByte); void WordAndChar_print(std::string ); class TextQuery
{
public: typedef std::vector<std::string>::size_type line_no; void read_file(std::ifstream & );
std::set<line_no> run_query(const std::string&) const;
std::string text_line(line_no) const;
private:
void store_file( std::ifstream & );
void build_map(); std::vector<std::string> lines_of_text;
std::vector<std::string> bak_lines_of_text;
std::map< std::string,std::set<line_no> > word_map; }; void print_resluts(const std::set< TextQuery::line_no> & ,
const std::string & , const TextQuery &); #endif

2、function.cpp

 #include"head.h"

 bool IsChineseChar(WORD DoubleByte)
{
return ( (DoubleByte < ) || (DoubleByte > ) );
} void TextQuery::read_file( std::ifstream & is)
{
store_file(is);
build_map();
} std::set<TextQuery::line_no> TextQuery::run_query(const std::string& str) const
{
std::map<std::string, std::set<line_no> >::const_iterator
loc = word_map.find(str); if(loc == word_map.end())
{
return std::set<line_no>();
} return loc->second;
}
std::string TextQuery::text_line(line_no line_num) const
{
if(line_num < lines_of_text.size())
return lines_of_text[line_num]; throw std::out_of_range("line num is out of range");
} void TextQuery::store_file(std::ifstream & is)
{
std::string txtline;
while(std::getline(is,txtline))
{
lines_of_text.push_back(txtline);
int len = txtline.length();
for(int i = ; i <len ; i ++) //pretreatment
{
bool b1 = ,b2 =;
if(!IsChineseChar(txtline[i])
&&!isalnum(txtline[i]) )
txtline[i] = ' ';
b1 = IsChineseChar(txtline[i]);
if(i + < len)
b2 = IsChineseChar(txtline[i+]);
} bak_lines_of_text.push_back(txtline);
}
} void TextQuery::build_map()
{
for(line_no line_num = ; line_num != bak_lines_of_text.size() ; ++line_num)
{
std::istringstream strline(bak_lines_of_text[line_num]);
std::string word;
while(strline >> word)
{
word_map[word].insert(line_num);
}
}
} void print_resluts(const std::set< TextQuery::line_no> & ss,
const std::string & str, const TextQuery &tq)
{
typedef std::set< TextQuery::line_no> lineset; lineset::size_type size = ss.size();
std::string path = str + ".txt";
std::ofstream outfine(path);
outfine<<str<<" occurs "<<size <<"times"<<std::endl;
lineset::const_iterator it = ss.begin(); for(; it != ss.end() ; ++ it)
{
outfine<<"\t( line "<<(*it)+<<" )"<<tq.text_line(*it)<<std::endl;
outfine<<"\t( line "<<(*it)+<<" )"<<tq.text_line(*it+)<<std::endl;
}
}

3、main.cpp

 #include"head.h"

 int main()
{
std::ifstream infile("char.txt"); if(!infile.is_open())
{
printf("No input file!\n");
return -;
}
TextQuery tq;
tq.read_file(infile);
std::string query;
while (printf("enter user ID to look for:\n"),
std::cin>>query )
{
std::set<TextQuery::line_no> loc = tq.run_query(query);
print_resluts(loc,query,tq);
}
return ;
}

三、需要改进的地方

1、

 for(; it != ss.end() ; ++ it)
{
outfine<<"\t( line "<<(*it)+<<" )"<<tq.text_line(*it)<<std::endl;
outfine<<"\t( line "<<(*it)+<<" )"<<tq.text_line(*it+)<<std::endl;
}

找到 用户名所在的行后, 我 直接把 用户名 所在的 下一行 作为 聊天内容,但其实 聊天内容里面 可以换行。

2、

如果 聊天 内容 里面 出现 用户名,会 误以为 是 用户名 所在的行,把这行输出 并把 下一行 输出。

特定用户QQ群聊天记录导出的实现的更多相关文章

  1. QQ群聊天记录文件分割

    嗯,如题 是个蛋疼物 目前QQ的聊天记录导出功能很让人郁闷 三种聊天记录格式的导出 1  TXT   没图 2  BAK  只能再导入QQ使用 3  MHT 有图有字,缺点是一旦聊天记录很多,文件体积 ...

  2. 使用 R 语言挖掘 QQ 群聊天记录

    1.获取数据 从 QQ 消息管理器中导出消息记录,保存的文本类型选择 txt 文件.这里获取的是某群从 2016-04-18 到 2016-05-07 期间的聊天记录,记录样本如下所示. 消息记录(此 ...

  3. 一梦江湖费六年——QQ群聊天分析

    本文结构: 一.那些年我们加过的QQ群 二.数据读入和整理(一)--来自蓝翔的挖掘机 二.数据读入和整理(二)--你不知道的事 三.聊天宏观(1)--寤寐思服 三.聊天宏观(2)日月篇 三.聊天宏观( ...

  4. 安卓QQ聊天记录导出、备份完全攻略

    发到知乎竟然被删掉,我也不知道我到底违反了哪条.唉,别人的毕竟是别人的.虽然博客园也是别人的 前言 我对聊天记录的备份比较执着,也在这上面折腾过不少.碰到过不少令人头疼的麻烦,在这里分享一下经验. 关 ...

  5. 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)

    查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...

  6. 前端资料QQ群交流

    转:https://github.com/jsfront/src/blob/master/qq.md 这本来是我QQ群内部的一份公共约定的日常交流规则,后来得到大伙的一致认可,并用实际行动来捍卫它,使 ...

  7. 关于iOS特定设别推送(特定用户推送)【原】

    在这里,我就不哆嗦如何制作推送证书之类的了,网上一搜一大堆. 我们现在很多开发者的推送,就是集成第三方的推送SDK,然后通过第三方的推送平台帮我们进行推送.其实,这种推送(如JPush),一般只能广播 ...

  8. 我们是怎么管理QQ群的

    文章背景:腾讯平台上的qq群数以千万百万计,但99%的在吹水扯蛋,从早上的问好开始,到晚上的晚安,无一不浪费青春之时间,看之痛心,无力改变,只好自己建了一个,希望能以此来改变群内交流的氛围或环境. 以 ...

  9. 关于玩QQ消息导入导出功能的感想!

    今天玩了一下QQ的导入导出聊天记录的功能,感觉自己有些白痴,因为作为一个软件开发人员对自己平时使用的软件的功能掌握的不够,别说其他的任何东西了就连功能性的操作有些也不知道更别说熟练或精通了,这不是一个 ...

随机推荐

  1. Java SE ---数据类型

    Java中数据类型(Data Type)分为基本数据类型(Primitive Data Type)和引用类型(Reference Data Type). Java中的基本数据类型共有以下8种:   1 ...

  2. android开发之路13(实际开发常见问题及解决办法ING)

    1.DDMS下无法浏览SDcard? 在做音乐播放器的时候,想通过eclipse中的DDMS视图将音频文件push到sd卡中,发现总是报错 :Failed to push selection: Rea ...

  3. obj 转为Json 时间格式自定义

    var tb = evnWarningBll.GatWarning();             var  timeFormat = new IsoDateTimeConverter();       ...

  4. LeetCode 122

    Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...

  5. SQL表连接查询

    SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...

  6. Quartz Scheduler(2.2.1) - Working with JobStores

    About Job Stores JobStores are responsible for keeping track of all the work data you give to the sc ...

  7. (Android)View.getHeight或getWidth为0时的一些解决方案

    在Android开发过程中,经常需要动态的更改View的大小,有些View的大小可能需要根据其他View的大小来设定,或者你需要得到一些View的大小来进行某项操作,但是有可能你需要在onCreate ...

  8. sql server日期时间转字符串(转)

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  9. Cocos2d-x如何控制动作速度

    基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变.但这样的改变速度匀速的.线性的.通过ActionEase及其的派生类和Speed 类我们可以使精灵以非匀速或非线性速度运动,这样看起了效果更 ...

  10. swift项目-模仿团购(主界面的搭建,以及首页的一些细节)

    以前学习oc的时候写的一个团购的项目,现在学习swift,拿来用swift写一遍,也是连猜带蒙的,一点一点的往上凑. 今天主要是把主要的架子搭起来了. 主要有:UITabBarController,U ...