最近没啥可写的  这里写下做的STL小练习 作为记录

去除指定字符串中的空格

获取文件名并根据名字创建临时文件,以TMP后缀结尾,已经为TMP后缀结尾文件则创建以XXX后缀结尾文件

读取一行输入内容 并将单词翻转打印

// 1111.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <string>
#include <iostream>
#include <algorithm> using namespace std; string strArray[5] = {"prog.dat","mydir","hello.","oops.tmp","end.dat"}; string TrimSpace(string str)
{ string::size_type i; while( (i = str.find(" ")) != string::npos )
{
str.replace(i,1,"");
} string::iterator newEnd = remove(str.begin(),str.end(),' ');
str.erase(newEnd,str.end()); return str;
} void ReversPrintWordInLine()
{
const string delims(" \t,.;");
string line;
while(getline(cin,line))
{
string::size_type begIdx,endIdx;
begIdx = line.find_first_not_of(delims);
while(begIdx != string::npos)
{
endIdx = line.find_first_of(delims,begIdx);
if(endIdx == string::npos)
{
endIdx = line.length();
}
for(int i = endIdx-1;i >= static_cast<int>(begIdx);--i)
{
cout << line[i];
}
cout << ' '; begIdx = line.find_first_not_of(delims,endIdx);
}
cout << endl;
}
} void CreateTmpFilename()
{ string filename,basename,extname,tmpname;
const string suffix("tmp"); for(int i = 0;i < 5;++i)
{
string::size_type idx = strArray[i].find(".");
if(idx == string::npos)
{
tmpname = strArray[i]+"."+suffix;
}else
{
basename = strArray[i].substr(0,idx);
extname = strArray[i].substr(idx+1);
if(extname.empty())
{
tmpname = strArray[i];
tmpname += suffix;
}else if(extname == suffix)
{
tmpname = strArray[i];
tmpname.replace(idx+1,extname.size(),"xxx");
}else
{
tmpname = strArray[i];
tmpname.replace(idx+1,suffix.size(),suffix);
}
} cout << strArray[i] << " ==> " << tmpname << endl;
}
cout << endl;
} int _tmain(int argc, _TCHAR* argv[])
{
string str = TrimSpace(" sdfsf sdfs sdf ");
cout << "remove space " << str << endl << endl; CreateTmpFilename(); ReversPrintWordInLine(); return 0;
}

  

stl string 小练习的更多相关文章

  1. 深入剖析 linux GCC 4.4 的 STL string

    转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Wri ...

  2. 格式字符串分配stl::string

    代码非常easy,不解释,直接在代码: #include <cstdio> #include <cstdarg> #include <iostream> using ...

  3. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  4. C++标准模板库Stand Template Library(STL)简介与STL string类

    参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进 ...

  5. 转C++之stl::string写时拷贝导致的问题

    前几天在开发某些数据结构到文件的 Dump 和 Load 功能的时候, 遇到的一个 bug . [问题复现] 问题主要出在 Load 过程中,从文件读取数据的时候, 直接使用 fread 的去操作 s ...

  6. stl string

    10.2.1 STL的string 1String概念 ²  string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都 ...

  7. [转] 深入剖析 linux GCC 4.4 的 STL string

    本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术. 平台:x86_64-redhat-linux gcc ver ...

  8. STL - string(典型操作demo)

    1String概念  string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字符串,那么二者有什么区别呢 ...

  9. STL——string

    C++之string类型详解 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个泛型类出现,他集成的操作函 ...

随机推荐

  1. Redis 在 LINUX 系统下 安装, 启动

    01, 下载  http://www.redis.cn/ ,  这里下再下来的是 redis-4.0.1.tar.gz 这个压缩包 02, 将压缩包放到 linux 系统中,  一般放在 usr/lo ...

  2. vue-cli 3.0之跨域请求代理配置及axios路径配置

    vue-cli 3.0之跨域请求代理配置及axios路径配置 问题:在前后端分离的跨域请求中,报跨域问题 配置: vue.config.js: module.exports = { runtimeCo ...

  3. 创建类type (底层代码)

    类的创建时是用type 实现的 def __init__(self, name): self.name = name def fun(self): print("%s is talking' ...

  4. as3 air 获取文件夹下的所有文件

    private function getFile(directory:File) { var files:Array = directory.getDirectoryListing(); for(va ...

  5. 14 MySQL--事务&函数与流程控制

    一.事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 一堆sql语句:要么同时执行成功,要么同时失败 # 事务的原子性 场景: ...

  6. UI5-文档-4.37-Content Density

    在本演练教程的这一步中,我们将根据用户的设备调整内容密度.SAPUI5包含不同的内容密度,允许您为支持触摸的设备显示更大的控件,为鼠标操作的设备显示更小.更紧凑的设计.在我们的app中,我们将检测设备 ...

  7. SWFUpload乱码问题的解决

    目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...

  8. pipeenv error

    [root@mhc tmp]# pipenv --python 3.6Creating a virtualenv for this project…Using /root/python3/bin/py ...

  9. Wilcoxon Signed Rank Test

    1.Wilcoxon Signed Rank Test Wilcoxon有符号秩检验(也称为Wilcoxon有符号秩和检验)是一种非参数检验.当统计数据中使用“非参数”一词时,并不意味着您对总体一无所 ...

  10. 这两天的刷机+Root

    最近为了研究Xposed框架的搭建使用,将自己红米Note2尝试root后,开不了机了.后使用(网上下载的线刷宝,刷的官网线刷宝成功开机了,然后里面会自带很多软件,然后通过下载KingRoot将手机自 ...