(原創) 如何列出一篇文章的所有單字並依size和字母順序排序? (初級) (C++)

本博客介绍了一个使用C++处理文本文件的方法。通过使用istream_iterator从Alice_story1.txt中读取所有单词,去除标点符号,利用sort()和unique()函数去除重复单词,并按大小和字母顺序排序,最后将结果输出到控制台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

這是我修C++ Lab題目
Read all the words from Alice_stroy1.txt using istream_iterator and write all unique words in a size order into cout using ostream_iterator. For those of the same size, write them in an alphbetic order.

 1ExpandedBlockStart.gifContractedBlock.gif/**//* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : stream_iterator_alice.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6InBlock.gifDescription : Demo how to transform() & sort() & stable_sort()
 7InBlock.gifRelease     : 12/17/2006 1.0
 8ExpandedBlockEnd.gif*/

 9None.gif#include <fstream>
10None.gif#include <iterator>
11None.gif#include <vector>
12None.gif#include <algorithm>
13None.gif#include <iostream>
14None.gif#include <string>
15None.gif#include <cctype> // ispunct()
16None.gif
17None.gifusing namespace std;
18None.gif
19None.gifbool sortRule(const string&const string&);
20None.gifstring noPunct(const string&);
21None.gif
22ExpandedBlockStart.gifContractedBlock.gifint main() dot.gif{
23InBlock.gif  ifstream inFile("Alice_story1.txt");
24InBlock.gif
25InBlock.gif  vector<string> svec;
26InBlock.gif  // Copy ifstream to vector
27InBlock.gif  copy(istream_iterator<string>(inFile), istream_iterator<string>(), back_inserter(svec));
28InBlock.gif
29InBlock.gif  // transform vector, cutting off punctuation
30InBlock.gif  transform(svec.begin(), svec.end(), svec.begin(), noPunct);
31InBlock.gif  // Sort vector for unique
32InBlock.gif  sort(svec.begin(), svec.end());
33InBlock.gif  // Unique vector
34InBlock.gif  vector<string>::iterator iter = unique(svec.begin(), svec.end());
35InBlock.gif  svec.erase(iter, svec.end());
36InBlock.gif  
37InBlock.gif  stable_sort(svec.begin(), svec.end(), sortRule);
38InBlock.gif  // Copy to cout
39InBlock.gif  copy(svec.begin(), svec.end(), ostream_iterator<string>(cout,"\n"));
40InBlock.gif  return 0;
41ExpandedBlockEnd.gif}

42None.gif
43ExpandedBlockStart.gif<img id=Codehighlighter1_1166_1200_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1166_1200_Closed_Text.style.display='none'; Codehighlighter1_1166_1200_Open_Image.style.display='inline'; Codeh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值