// 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. 《DSP using MATLAB》Problem 3.3

    按照题目的意思需要利用DTFT的性质,得到序列的DTFT结果(公式表示),本人数学功底太差,就不写了,直接用 书中的方法计算并画图. 代码: %% -------------------------- ...

  2. TCP滑动窗口与回退N针协议

    [转]TCP 滑动窗口协议/1比特滑动窗口协议/后退n协议/选择重传协议 2014-1-5阅读884 评论0 本文转自 http://www.cnblogs.com/ulihj/archive/201 ...

  3. java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用

    第一种排序:[冒泡排序]基本数据类型的排序. [1]最简易的冒泡排序.效率低.因为比较的次数和趟数最多. /** * 最原始的冒泡排序. * 效率低. * 因为趟数和次数最多.都是按最大化的循环次数进 ...

  4. 详解Oracle手动创建数据库几大步骤

    在这里我们将介绍Oracle手动创建数据库几大步骤,包括前期的准备工作,以及具体的实施. Oracle手动创建数据库是本文介绍的重点,希望通过本文能帮助大家更好的利用Oracle.51CTO也向您推荐 ...

  5. IMP-00009: 导出文件异常结束 imp

    在一次exp/imp中,用imp导入数据时报错.错误信息如下: IMP-00009: 导出文件异常结束 imp导入时异常结束可以有很多原因造成,要具体问题具体分析. 可能原因一: 导入的数据表过大,而 ...

  6. springboot利用MockMvc测试controller控制器

    主要记录一下控制器的测试,service这些类测试相对简单些(可测试性强) API测试需求比较简单: ① 需要返回正确的http状态码 200 ② 需要返回json数据,并且不能返回未经捕获的系统异常 ...

  7. Python 字串处理

    #!/usr/bin/python #-*- coding:utf-8 –*- import os import sys import re import shutil import xlrd imp ...

  8. Visual Studio Team Foundation Server 2013

    下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=42308 Microsoft Visual Studio Team Foun ...

  9. Java 将指定字符串连接到此字符串的结尾 concat()

    Java 手册 concat public String concat(String str) 将指定字符串连接到此字符串的结尾. 如果参数字符串的长度为 0,则返回此 String 对象.否则,创建 ...

  10. MongoDB 生态 – 可视化管理工具

    工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoD ...