有道单词本导出为txt文件后是这样子的,可以看到每个单词之间没有分开,而且还有的单词意思注释写了两次
下图是排序完成后的结果
代码如下,使用的话更改一下目录即可,排序之后的单词可以用word打开,这个时候就不会有多余的空行出现了,然后用word处理一下就可以愉快的背单词了。1600多行的文件c++0.18秒就搞定了,恐怖如斯~~
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
ifstream in;
ofstream out;
in.open("E:\\word.txt");
out.open("E:\\word_sort.txt");
string str;
vector<string>vet;
char ch;
while(getline(in,str))
{
ch=str[0];
// cout<<ch<<endl;
//读入了新的单词,要处理之前的单词
if(ch>='0'&&ch<='9')
{
// cout<<"新的单词"<<endl;
//第一轮读入,先存放
if(vet.size()==0)
{
vet.push_back(str);
continue;
}
bool flag=0;
//处理音标
for(int i=0;i<vet[0].size();i++)
{
if(vet[0][i]=='[')
{
flag=1;
}
if(flag)vet[0][i]='\0';
}
//写入单词的中文意思
for(int i=0;i<vet.size();i++)
{
out<<vet[i]<<endl;
}
vet.clear();
vet.push_back(str);
out<<endl;
}
else if(ch=='\0')
{
// cout<<"空格"<<endl;
continue;
}
else // 单词释义
{
vet.push_back(str);
}
}
}