还是老规矩,我们带上问题上路,关于问题,其实真没啥好问题,所以我在有道词典上看到一篇文章,随手摘了下来,当然,为了更加能够具有教学的意义,所以,我只是随意摘了几段下来,分别存在几个文本里,然后我们将几个文本的文件读取,当然,我们不是读取数据这么简单,如果只想读这些内容的话,我们直接打开文本查看不久好了吗?折腾这么个大弯子,我有毛病了吧。那么我们读取这些数据干嘛呢?
我们分别读取这些数据之后,然后将他们合并,拷贝到一个文件中,再说一遍,我们这里不是想要查看内容,也不是想要展示什么技术,如果说,当然,或许我们真会用到这些技术呢,这也许是以后的后话了(大家工作中或许会用到),现在,我们要做的是一件极为无聊的事。
————————————–
1)把每个文件的内容都拷贝到一个数组里。
2)将所有的小数组合并成一个大数组。
3)我们排序这些单词(以字典序)。
4)去掉所有重复的单词。
5)再按照长短排序。
6)计算超过某个数字的单词个数。
7)去掉任何没有语义的中性词(and,if,or,but等等)。
7)打印出最后所剩下的。
———————————————
这听起来好像有些复杂,要完成他或许要花费不少的精力,当然,如果我们不使用标准库的话,所以大家今天可以带着这个问题去思考,明天我们来进一步完成,今天,我们来看看怎么读取这些文件,然后把文件内容储存于另一个文件之中,要实现这个很简单,所以我直接贴上代码(如果屏幕小代码看起不舒服的话可以考虑横屏看,有些时候我们代码比较长看起很乱不整齐的时候,把手机横屏过来就舒服多了)
—————————————–
#include <vector>
#include <string>
#include <iterator>
#include <numeric>
#include <algorithm>
#include <iostream>
#include <
fstream>
using namespace std;
int main(){
typedef vector<string>my_Text;
//为了书写起来方便,我们用my_Text代替vector<string>
my_Text Array_Text;
my_Text my_Array;
string temp;
while (cin>>temp &
&
temp != "
q"
)
{
my_Array.push_back(temp);
}
my_Text::iterator it = my_Array.begin();
ofstream outFile("
out.txt"
);
while (it != my_Array.end()){
ifstream inFile(*it);
if (inFile.fail())
outFile <<"
Unable open file:"
<<*it <<endl;
string str;
while (getline(inFile, str, ''))
Array_Text.push_back(str);
inFile.close();
it++;
}
it = Array_Text.begin();
while (it != Array_Text.end())
outFile <<*it++ <<"
"
;
outFile.close();
return 0;
}
————————————–
我们把5个txt的文件都放进一个文件里面(ofstream outFile("
out.txt"
)如果没有该文件,outFile会自动创建该文件),为了演示,我把刚创建的文件删了,再运行一遍,我们来看看结果:
今天我们就先完成这个就够了,余下的留给大家思考,我们下一讲继续研究下一个问题。
=====================
回复D直接查看目录
原文始发于微信公众号(
C/C++的编程教室
):第六十二讲 初识标准库(1)
|