C++Primer第五版 9.5.3节练习
2015-09-18 07:30
603 查看
练习9.47:编写程序,首先查找string“abc3d7R4E6”中的每个数字字符,然后查找其中每个字母字符。编写两个版本的程序,第一个要使用find_first_of,第二个要使用find_first_not_of.
答:见程序练习9.47
练习9.48:假定name和numbers的定义如325页所示,numbers.find(name)返回什么?
答:返回string::npos(参考P325,9.5.3)
练习9.49:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender),如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender)。编写程序,读入一个单词文件,输出最长的既不包含上出头部分,也不包含下出头部分的单词。
答:见练习9.49.cpp
练习9.47
练习9.48
练习9.49
答:见程序练习9.47
练习9.48:假定name和numbers的定义如325页所示,numbers.find(name)返回什么?
答:返回string::npos(参考P325,9.5.3)
练习9.49:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender),如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender)。编写程序,读入一个单词文件,输出最长的既不包含上出头部分,也不包含下出头部分的单词。
答:见练习9.49.cpp
练习9.47
/* *练习9.47 *日期:2015/8/7 *问题描述:练习9.47:编写程序,首先查找string"abc3d7R4E6"中的每个数字字符,然后查找其中每个字母字符。编写两个版本的程序,第一个要使用find_first_of,第二个要使用find_first_not_of. *说明;字符的查找 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <string> using namespace std; void use_find_first_of(string str, string find_str) { auto pos = 0; while((pos = str.find_first_of(find_str,pos)) != string::npos) { cout << "char: " << str[pos] << " index: " << pos << endl; ++pos; } cout << endl; } void use_find_first_not_of(string str , string not_find_str) { auto pos = 0; while((pos = str.find_first_not_of(not_find_str,pos)) != string::npos) { cout << "position: " << pos << " char: " << str[pos] << endl; ++pos; } cout << endl; } int main() { string str = "abc3d7R4E6"; string numbers = "0123456789"; string letters = "abcdRE"; use_find_first_of(str, numbers); use_find_first_of(str, letters); use_find_first_not_of(str, letters); use_find_first_not_of(str, numbers); return 0; }
练习9.48
#include <iostream> #include <string> using namespace std; int main() { string numbers("0123456789"), name("r2d2"); //cout << numbers.find(name) << endl; auto pos = numbers.find(name); cout << pos << endl; return 0; }
练习9.49
/* *练习9.49 *日期:2015/8/7 *问题描述:练习9.49:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender),如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender)。编写程序,读入一个单词文件,输出最长的既不包含上出头部分,也不包含下出头部分的单词。 *说明:弄清题意再下手,不然想了半天,发现题目都没读对,怎么可能做出来 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <string> #include <vector> #include <fstream> using namespace std; void output_max_subword(string filename) { string s = "bdfhkltgjpqy"; //找出上下头的字母 vector<string> vec; string word; ifstream stream(filename); //读入单词文件 while(!stream.eof()) { stream >> word; auto pos = 0; pos = word.find_first_of(s,pos); if(pos == string::npos) vec.push_back(word); //将不包含上下头的字母放进容器 } auto count = 0; for(auto i = 0; i != vec.size(); ++i) //找尺寸最大的字符串输出 { auto max = vec[0].size(); if(vec[i].size() >= max) count = i; } cout << vec[count] << endl; } int main() { output_max_subword("word.txt"); return 0; }
相关文章推荐
- C++Primer第五版 9.5.2节练习
- C++Primer第五版 9.5.1节练习
- C++Primer第五版 9.4节练习
- C++Primer第五版 9.3.5节练习
- C++Primer第五版 9.3.4节练习
- C++Primer第五版 9.3.3节练习
- C++Primer第五版 9.3.2节练习
- C++程序与非C++程序的链接
- 单例模式简介以及C++版本的实现
- c++ primer第五版(中文)习题答案 第十章第一节第一小节-概述
- C++:数组排列组合的问题。
- 插入排序(C/C++)
- const在函数前与函数后的区别
- c++设计模式----Decorator(装饰)
- C语言 可变长度的数组 -2
- TwinCAT 3中基于UDP协议通讯的C++实现
- Leetcode之String to Integer (atoi)
- C++面试题
- 字符替换 利用c++string类型
- 关于C语言中数据类型的转化方式