// MyPics.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <string>
#include <iostream>
#include <vector> using namespace std; string::size_type width(const vector<string>& v)
{
string::size_type maxLen = 0;
for (vector<string>::const_iterator it = v.begin(); it != v.end(); it++) {
if (maxLen < it->size())
maxLen = it->size();
}
return maxLen;
} vector<string> frame(const vector<string>& p) {
vector<string> v;
string::size_type maxLen = width(p);
string s(maxLen + 4, '*');
v.push_back(s);
for (vector<string>::const_iterator it = p.begin();
it != p.end(); it++){
v.push_back("* " + *it + string(maxLen - it->size(),' ') + " *");
}
v.push_back(s); return v;
} vector<string> hcat(const vector<string>& right,
const vector<string>& left) {
vector<string> v;
string::size_type rightMaxLen = width(right);
int index = 0;
while (index < right.size() || index < left.size()) {
string s;
if (index < right.size()) {
s = right[index];
s += string(rightMaxLen - right[index].size(),' ' );
}
else
s = string(rightMaxLen,' '); if (index < left.size())
s += left[index]; index++;
v.push_back(s);
} return v;
} vector<string> vcat(const vector<string>& top,
const vector<string>& bottom) {
vector<string> v = top;
for (vector<string>::const_iterator it = bottom.begin();
it != bottom.end(); it++)
{
v.push_back(*it);
} return v;
} int main()
{
vector<string> p;
p.push_back("this is an");
p.push_back("example");
p.push_back("to");
p.push_back("illustrate");
p.push_back("framing"); vector<string> v = frame(p);
for (vector<string>::const_iterator it = v.begin();
it != v.end(); it++) {
std::cout << *it << std::endl;
}
std::cout << std::endl << std::endl; v.clear();
v = vcat(p,frame(p));
for (vector<string>::const_iterator it = v.begin();
it != v.end(); it++) {
std::cout << *it << std::endl;
} std::cout << std::endl << std::endl; v.clear();
v = hcat(p, frame(p));
for (vector<string>::const_iterator it = v.begin();
it != v.end(); it++) {
std::cout << *it << std::endl;
} std::cout << std::endl << std::endl; v.clear();
v = hcat(frame(p),p);
for (vector<string>::const_iterator it = v.begin();
it != v.end(); it++) {
std::cout << *it << std::endl;
} return 0;
}

  

c++沉思录中 对字符串进行围边 横向连接 竖向连接操作的练习的更多相关文章

  1. C++中对字符串进行插入、替换、删除操作

    #include <iostream> #include <string> using std::cout; using std::endl; using std::strin ...

  2. Atitit。 沉思录 与it软件开发管理中的总结 读后感

    Atitit. 沉思录 与it软件开发管理中的总结 读后感 1. <沉思录>,古罗马唯一一位哲学家皇帝马可·奥勒留所著 2 2. 沉思录与it软件开发管理中的总结 2 2.1. 要有自己的 ...

  3. 【C++沉思录】句柄1

    1.在[C++沉思录]代理类中,使用了代理类,存在问题: a.代理复制,每次创建一个副本,这个开销有可能很大 b.有些对象不能轻易创建副本,比如文件2.怎么解决这个问题? 使用引用计数句柄,对动态资源 ...

  4. 生活沉思录 via 哲理小故事(四)

    1.围墙里的墓碑 第一次世界大战期间,驻守意大利某小镇的年轻军官结识了镇上的牧师.虽然军官信仰信教,而牧师是天主教牧师,但两人一见如故. 军官在一次执行任务中身负重伤,弥留之际嘱托牧师无论如何要把自己 ...

  5. 生活沉思录 via 哲理小故事

    本文转载:http://www.cnblogs.com/willick/p/3174803.html 1.小托蒂的悲剧 意大利小男孩托蒂,有一只十分奇怪的眼睛,因为从生理上看,这是一只完全正常的眼睛, ...

  6. 生活沉思录 via 哲理小故事(一)

    1.小托蒂的悲剧 意大利小男孩托蒂,有一只十分奇怪的眼睛,因为从生理上看,这是一只完全正常的眼睛,但却是失明的. 原来,托蒂刚出生时,这只眼睛轻度感染,曾用绷带缠了两个星期.这对常人来说几乎没有人任何 ...

  7. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

  8. 使用strings查看二进制文件中的字符串

    使用strings查看二进制文件中的字符串 今天介绍的这个小工具叫做strings,它实现功能很简单,就是找出文件内容中的可打印字符串.所谓可打印字符串的涵义是,它的组成部分都是可打印字符,并且以nu ...

  9. 在 case 语句中使用字符串-转

    http://www.cnblogs.com/del/archive/2008/07/08/1237856.html 非常遗憾 Delphi 的 case 语句不支持字符串, 但我觉得这也可能是基于效 ...

随机推荐

  1. 常用PHP框架收集

    1.ThinkCMFX http://git.oschina.net/thinkcmf/ThinkCMFX 2.ThinkPHP http://www.thinkphp.cn/down.html 3. ...

  2. TypeScript学习笔记(二) - 基本类型

    本篇将简单介绍TypeScript的几种基本类型. TypeScript基本类型有如下几种: Boolean Number String Array Tuple Enum Any 另外还有void类型 ...

  3. kudu yum 安装

    yum 源 http://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/cloudera-kudu.repo [cloudera-kudu] # Pac ...

  4. ballerina 学习二十四 监控ballerina

    ballerina 服务的监控还是比较方便的,以及集成了Prometheus Grafana Jaeger Elastic Stack 监控服务监控的集成 主要包含以下几个步骤 a. 安装docker ...

  5. 【开源推荐】PredictionIO:构建预测功能的机器学习服务器

    PredictionIO是一款开源的机器学习服务器,开发工程师和数据分析师可以使用它构建智能应用程序,并且还可以做一些预测功能,比如个性化推荐.发现内容等.好比开发者可以使用数据库服务器过滤信息. P ...

  6. [C++ Primer] 第2章: 变量

    初始化与赋值 当对象在创建时获得了一个特定的值, 我们就说这个对象被初始化了. 在使用=号时, 如果创建了新的对象, 则为初始化而非赋值. 初始化不是赋值, 初始化的含义是创建变量时赋予其一个初始值, ...

  7. 02 - Unit02:登录功能

    需求实现步骤 发送Ajax请求 服务器处理 Ajax回调处理 登录功能 发送Ajax请求 绑定事件:"登录"按钮的单击事件 获取参数:用户名userName和密码password ...

  8. XSS 与 CSRF 两种跨站攻击

    在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是历史同样悠久的 ...

  9. PowerDesigner如何将消失的工具栏显示出来

    工具Tool->自定义工具栏,在弹出窗口中选中Palette,并点击[Close]关闭窗口.  

  10. ThinkJava-输入和输出

    1/0流的典型使用方式   1.缓冲输入文件 package com.java.io; import java.io.BufferedReader; import java.io.File; impo ...