如果一个字母延伸到中线之上,如d或f,则称其有上出头部分。如果一个字母延伸到中线之下,如p或g,

则称其有下出头部分。编写程序,读入一个单词,输出最长的即不包含上出头部分,也不包含下出头部分单

词。

// 9_49.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<string>
#include<iostream>
using namespace std; string& func(string &str)
{
string ascenderAndDescender = "bdfghjklpqty";//把上出头部分和下出头部分的字母包含进来
static string maxLengthStr = ""; //用来储存最长的要求字符串
int pos = ,posAAD=; //pos用来表示所要求字符的位置,posADD用来表示上出头或者下出头字符的位置
while ((pos = str.find_first_not_of(ascenderAndDescender, posAAD)) != str.npos)//求第一个所要求字符的位置
{
if ((posAAD = str.find_first_of(ascenderAndDescender, pos)) != str.npos&&maxLengthStr.size() < (posAAD - pos))
{ //求第一个上出头或者下出头字符的位置
maxLengthStr = string(str,pos,posAAD-pos); //如果新的所要求的字符串长度教大,赋予它新值
}
}
if (pos = str.find_last_not_of(ascenderAndDescender,) && maxLengthStr.size() < (str.length() - pos))
maxLengthStr = string(str,pos); //这是为了检验有可能在最后的情况
return maxLengthStr;
} int main()
{
string str = "asaaaaaaashgasjgpdhgasjqwghnaanbmnna";
cout << func(str) << endl;
return ;
}

// 9_49.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"#include<string>#include<iostream>using namespace std;
string& func(string &str){string ascenderAndDescender = "bdfghjklpqty";//把上出头部分和下出头部分的字母包含进来static string maxLengthStr = "";             //用来储存最长的要求字符串int pos = 0,posAAD=0;                        //pos用来表示所要求字符的位置,posADD用来表示上出头或者下出头字符的位置while ((pos = str.find_first_not_of(ascenderAndDescender, posAAD)) != str.npos)//求第一个所要求字符的位置{if ((posAAD = str.find_first_of(ascenderAndDescender, pos)) != str.npos&&maxLengthStr.size() < (posAAD - pos)){                                                            //求第一个上出头或者下出头字符的位置maxLengthStr = string(str,pos,posAAD-pos);               //如果新的所要求的字符串长度教大,赋予它新值}}if (pos = str.find_last_not_of(ascenderAndDescender,0) && maxLengthStr.size() < (str.length() - pos))maxLengthStr = string(str,pos);                              //这是为了检验有可能在最后的情况return maxLengthStr;}
int main(){string str = "asaaaaaaashgasjgpdhgasjqwghnaanbmnna";cout << func(str) << endl;    return 0;}

C++ primer 练习9.49的更多相关文章

  1. 【足迹C++primer】49、超载,变化,运营商

    超载,变化,运营商 Conversion Operators 转换操作符 operator type() const Conversions to an array or a function typ ...

  2. C++primer 9.49

    题目:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender).如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender).编写程序,读入一个单词文件,输出最长 ...

  3. 【足迹C++primer】49、超载,更改,运营商

    超载,更改.运营商 Conversion Operators 转换操作符 operator type() const Conversions to an array or a function typ ...

  4. 转载:看c++ primer 学习心得

    学习C++ Primer时遇到的问题及解释 chenm91 感觉: l          啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看 ...

  5. c++ primer plus 第6版 部分二 5- 8章

    ---恢复内容开始--- c++ primer plus 第6版 部分二    5-  章 第五章 计算机除了存储外 还可以对数据进行分析.合并.重组.抽取.修改.推断.合成.以及其他操作 1.for ...

  6. c++ primer plus 第6版 部分一 1-4章

    c++ primer plus 第6版 源代码 ---编译器---目标代码---连接程序(启动代码--库代码)---可执行代码 源代码扩展名:c   cc   cxx     C    cpp     ...

  7. 《C++ Primer Plus》学习笔记2

    <C++ Primer Plus>学习笔记2 第五章 循环和关系表达式 ========================================================== ...

  8. C Primer Plus 学习体会

    本月刚刚开始学习<C primer plus>,之前课上草草学过一遍,讲到指针就结束了.现在重新开始看感觉难度不大只是刚开始接触有些语言细节比较琐碎.学习这一周的体会如下: 诸多前辈推荐的 ...

  9. 49. 3种方法实现复杂链表的复制[clone of complex linked list]

    [本文链接] http://www.cnblogs.com/hellogiser/p/clone-of-complex-linked-list.html [题目] 有一个复杂链表,其结点除了有一个ne ...

随机推荐

  1. FileReader 基本介绍

    转自:http://blog.csdn.net/zk437092645/article/details/8745647 用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步 ...

  2. [Hibernate] - Select/Update/Delete/Insert

    Java bean: package com.my.bean; import java.util.Date; public class WorkPack { private String uWorkP ...

  3. JAVA解析各种编码密钥对(DER、PEM、openssh公钥)

    一.DER编码密钥对 先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的,可以参见PKCS8EncodedKeySpec和X509EncodedKeySpec. DER编码是ASN.1编 ...

  4. 【转】Java HashMap 源码解析(好文章)

    ­ .fluid-width-video-wrapper { width: 100%; position: relative; padding: 0; } .fluid-width-video-wra ...

  5. TCP非阻塞通信

    一.SelectableChannel SelectableChannel支持阻塞和非阻塞模式的channel 非阻塞模式下的SelectableChannel,读写不会阻塞 SelectableCh ...

  6. Javascript之UI线程与性能优化

    在浏览器中,Javascript执行与UI更新是发生在同一个进程(浏览器UI线程)中的.UI线程的工作基于一个简单的队列系统,任务会被保存到队列中直到进程空闲时被提取出来执行.所以Javascript ...

  7. c# Base64编码和图片的互相转换代码

    将图片转化为Base64字符串的流程是:首先使用BinaryFormatter将图片文件序列化为二进制数据,然后使用Convert类的ToBase64String方法.将Base64字符串转换为图片的 ...

  8. PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)

    2014-12-09 Created By BaoXinjian

  9. OAF_架构MVC系列3 - View的概述(概念)

    2014-06-18 Created By BaoXinjian

  10. 监控页面所有 ajax请求

    监控所有ajax请求: 你是不是有遇到这样的问题:页面发起两个ajax请求,希望它们都成功以后,再做一个动作? 很容易想到的解决方案是,等其中一个结束以后,再发起另外一个,这个过程用回调函数来完成.  ...