C++ Primer 课后习题9.39 统计单词个数并记录最大单词和最短单词
2015-05-12 14:33
465 查看
习题9.39: 已知有如下string对象:
编写程序计算sentence中有多少个单词,并指出其中最长和最短的单词。如果有多个最短或者最长单词,则将他们全部输出。
代码:
总结:(1)使用字符串流处理字符串,获取单个单词;
(2)使用string的find_first_not_of()方法除去“,:”非单词字符。
string line1 = "We were her pride of 10 she named us:"; string line2 = "Benjamin, Phoenix, the Prodigal"; string line3 = "and perspicacious perspicacious pacific Suzanne"; string sentence = line1 + ' ' + line2 + ' ' + line3;
编写程序计算sentence中有多少个单词,并指出其中最长和最短的单词。如果有多个最短或者最长单词,则将他们全部输出。
代码:
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <deque>
#include <algorithm>
#include <sstream>
using namespace std;
int main(int argc, char **argv)
{
string num("0123456789");
string alpha("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
string alphanum = num + alpha;
string line1 = "We were her pride of 10 she named us:"; string line2 = "Benjamin, Phoenix, the Prodigal"; string line3 = "and perspicacious perspicacious pacific Suzanne"; string sentence = line1 + ' ' + line2 + ' ' + line3;
stringstream ss;
ss.str(sentence);
string str;
string strMax;
string strMin;
vector<string> vStrMax;
vector<string> vStrMin;
int sum = 0;
while (ss>>str)
{
sum++;
string::size_type pos = 0;
//删除非字母字符
while ((pos = str.find_first_not_of(alphanum,pos)) != string::npos)
{
str.erase(pos);
}
//比较获取最大单词
if (str.size() > strMax.size())
{
strMax = str;
vStrMax.clear();
vStrMax.push_back(str);
}else if (str.size() == strMax.size())
{
vStrMax.push_back(str);
}
//比较获取最小单词,注意strMin第一次大小为0
if (str.size() < strMin.size() || strMin.size() == 0)
{
strMin = str;
vStrMin.clear();
vStrMin.push_back(str);
}else if (str.size() == strMin.size())
{
vStrMin.push_back(str);
}
}
return 0;
}
总结:(1)使用字符串流处理字符串,获取单个单词;
(2)使用string的find_first_not_of()方法除去“,:”非单词字符。
相关文章推荐
- 《C++ Primer》学习笔记:习题9.39 string对象中单词统计
- 《C++ Primer》学习笔记:习题9.39 string对象中单词统计
- 统计单词个数,并找出最长、最短的单词(9.39)
- C++ Primer(第五版)课后习题记录 —— 第五章
- C++ Primer 9.40习题 计算sentence有多少个单词,并输出最长、最短的单词d
- 习题9.39输出最长和最短单词
- C++ Primer(第四版) 课后习题3.14 vector单词转大写
- C语言打印统计单词长度的直方图<The C Programming Language>课后习题
- C++ Primer(第五版)课后习题记录 —— 第四章
- C++ Primer(第五版)课后习题记录 —— 第三章
- 习题9.39 计算string 中最短和最长的单词
- C++ Primer(第五版)课后习题记录 —— 第七章
- C++ Primer(第五版)课后习题记录 —— 第八章
- C++ Primer(第四版) 课后习题6.8 统计空格制表符换行的数目
- c++ primer 课后习题个人解答 part1 3.3
- 《C++ Primer》P314中使用insert重写单词统计程序的扩展
- 《C++ Primer》第五版课后习题解答_第四章(3)(34-38)
- 《C++ Primer》第五版课后习题解答_第五章(3)(15-19)
- 《C++ Primer》第五版课后习题解答_第五章(4)(20-25)
- 03_统计单词个数、求阶乘、输出最短和最长的字符串