stl string 小练习

最近没啥可写的  这里写下做的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 小练习

时间: 2024-10-06 01:53:35

stl string 小练习的相关文章

深入剖析 linux GCC 4.4 的 STL string

转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术. 平台:x86_64-redhat-linuxgcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 1. 问题提出 最近在我们的项目当中,出现了两次与使用string相关的问题. 1.1. 问题1:新代码引入的Bug 前一段时间有一个老项目来

stl string 使用指定的分隔符分割成数个子字符串

#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; void StringSplit(const string& str,vector<string>& vStr,const char& division) { int startPos = 0; int endPos = stri

stl string 容器的使用

string 是基本的字符串序列容器,对应数据结构中的串,和vector<char>也类似,但功能更多 string 容器的使用 1,string 的构造函数是. string() 2,string的添加函数,.   insert(),push_back() 3,string的遍历.      数组形式遍历,迭代器形式遍历 4,string的字符串替换  replace() 5,string 的字符搜索 find() 6,其他的常见函数 size(),length(),empty() #inc

将格式化字符串赋给stl::string

代码很简单,就不解释了,直接上代码: #include <cstdio> #include <cstdarg> #include <iostream> using namespace std; //功能:将格式化字符串赋给stl::string //参数:和printf的参数一样 //返回值:返回格式化后的string类 string StringFormat(const char *format, ...) { string result; //将字符串的长度初始化为

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

参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进行过学习和总结,但并没有一个宏观上的把握,现在通过上一篇和这一篇博文,将对C++模板以及基于C++模板的STL关联起来,形成一个总体的把握,对于掌握C++中模板(template)这一强有力的工具会十分有帮助.本文的主要内容有: (1) STL容器: (2) STL迭代器: (3) STL算法: (4) ST

格式字符串分配stl::string

代码非常easy,不解释,直接在代码: #include <cstdio> #include <cstdarg> #include <iostream> using namespace std; //功能:将格式化字符串赋给stl::string //參数:和printf的參数一样 //返回值:返回格式化后的string类 string StringFormat(const char *format, ...) { string result; //将字符串的长度初始化

STL - string(典型操作demo)

1String概念 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字符串,那么二者有什么区别呢. string和char*的比较 string是一个类, char*是一个指向字符的指针. string封装了char*,管理这个字符串,是一个char*型的容器. string不用考虑内存释放和越界. string管理char*所分配的内存.每一次string的复制,取值都由string类负责维护

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

本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术. 平台:x86_64-redhat-linux gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 1. 问题提出 最近在我们的项目当中,出现了两次与使用string相关的问题. 1.1. 问题1:新代码引入的Bug 前一段时间有一个老项目来一个新需求,我们新增了一些代码逻辑来处理这个新需求.测试阶段没有问题,

[转载] C++ STL string的Copy-On-Write技术

原文: http://coolshell.cn/articles/12199.html stl的string是经过严格优化的, 深入理解对以后编程过程中应用string非常有益处, 感谢左耳朵耗子的精彩文章 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检