C++ string功能补充(类型互转,分割,合并,瘦身)
int StringUtil::intFromString(string data)
{
//NOTE atoi是非标准C函数
return atoi(data.c_str());
}
string StringUtil::stringFromInt(int data)
{
char tmp[11];
memset(tmp,0,11);
sprintf(tmp,"%10d",data);
return string(tmp);
}
double StringUtil::doubleFromString(string data)
{
double tmp;
sscanf(data.c_str(),"%lf",&tmp);
return tmp;
}
string StringUtil::stringFromDouble(double data)
{
char tmp[21];
memset(tmp,0,21);
sprintf(tmp,"%20.3lf",data);
return string(tmp);
}
float StringUtil::floatFromString(std::string data)
{
float tmp;
sscanf(data.c_str(),"%f",&tmp);
return tmp;
}
std::string StringUtil::stringFromFloat(float data)
{
char tmp[21];
memset(tmp,0,21);
sprintf(tmp,"%20.3f",data);
return string(tmp);
}
bool StringUtil::boolFromString(std::string data)
{
if(data.compare("true") == 0)
return true;
else
return false;
}
std::string StringUtil::stringFromBool(bool data)
{
if(data)
return string("true");
else
return string("false");
}
vector<std::string> StringUtil::splitStringToArray(std::string source, std::string seperator)
{
vector<string> result;
if(!source.empty())
{
string::size_type begin = 0;
string::size_type end = 0;
unsigned int sepSize = seperator.size();
while((end = source.find_first_of(seperator,begin))!=string::npos)
{
string item = source.substr(begin,end-begin);
result.push_back(item);
begin=end + sepSize;
}
//last item,注意如果最后是分割符,则最后的元素为空字符串
if(begin <= source.size())
{
string item = source.substr(begin,source.size() - begin);
result.push_back(item);
}
}
return result;
}
std::string StringUtil::linkArrayToString(vector<std::string> array, std::string seperator)
{
string result;
if(array.size() > 0)
{
unsigned int limit = array.size() - 1;
for(unsigned int i=0;i< limit;++i)
{
result+=array[i];
result+=seperator;
}
result += array[limit];
}
return result;
}
map<std::string, std::string> StringUtil::splitStringToMap(std::string source, std::string primarySep, std::string secondarySep)
{
vector<string> array = StringUtil::splitStringToArray(source,primarySep);
vector<string> tmpArray;
map<string,string> result;
for(unsigned int i = 0; i< array.size();++i)
{
tmpArray = StringUtil::splitStringToArray(array[i],secondarySep);
if(tmpArray.size() >= 2)
{
result[tmpArray[0]] = tmpArray[1];
}
}
return result;
}
std::string StringUtil::linkMapToString(map<std::string, std::string> tmpMap, std::string primarySep, std::string secondarySep)
{
vector<string> tmpArray;
string tmpStr;
map<string,string>::iterator it = tmpMap.begin();
for(;it!=tmpMap.end();++it)
{
tmpStr = it->first+secondarySep+it->second;
tmpArray.push_back(tmpStr);
}
return StringUtil::linkArrayToString(tmpArray,primarySep);
}
std::string StringUtil::trimFront(std::string data)
{
unsigned int i = 0;
for(;i<data.size()&&data.at(i)==' ';++i)
{
}
if(i<data.size())
return data.substr(i,data.size()-i);
else
return string("");
}
std::string StringUtil::trimBack(std::string data)
{
int i = data.size()-1;
for(;i>=0&&data.at(i)==' ';--i)
{
}
if(i>=0)
return data.substr(0,i+1);
else
return string("");
}
std::string StringUtil::trim(std::string data)
{
string tmp = StringUtil::trimFront(data);
return StringUtil::trimBack(tmp);
}
C++ string功能补充(类型互转,分割,合并,瘦身)的更多相关文章
- C++ string的那些坑,C++ string功能补充(类型互转,分割,合并,瘦身) ,c++ string的内存本质(简单明了的一个测试)
1. size_type find_first_of( const basic_string &str, size_type index = 0 ); 查找在字符串中第一个与str中的某个字符 ...
- 个人永久性免费-Excel催化剂功能第28波-工作薄瘦身,安全地减少非必要冗余
Excel催化剂在完善了数据分析场景的插件需求后,决定再补充一些日常绝大多数Excel用户同样可以使用到的小功能,欢迎小白入场,在不违背太多Excel最佳实践的前提下,Excel催化剂乐意为广大Exc ...
- 【工具类】Date、Long、String 类型互转
开发常常遇到Date.Long.String 三种类型数据须要互转的问题.以此记录. public static void main(String[] args) throws ParseExcept ...
- 【转】CString类型互转 int
CString类型互转 int 原文网址:http://www.cnitblog.com/Hali/archive/2009/06/25/59632.html CString类型的转换成int 将字 ...
- Java string和各种格式互转 string转int int转string
Java string和各种格式互转 string转int int转string 简单收集记录下 其他类型转String String s = String.valueOf( value); // 其 ...
- C# enum、int、string三种类型互相转换
enum.int.string三种类型之间的互转 #代码: public enum Sex { Man=, Woman= } public static void enumConvert() { in ...
- JS中String类型转换Date类型 并 计算时间差
JS中String类型转换Date类型 1.比较常用的方法,但繁琐,参考如下:主要使用Date的构造方法:Date(int year , int month , int day)<script& ...
- Swift的字符串String是值类型
根据<The Swift Programming Language>中文版基于Xcode6.1的文章描述: Swift的 String 类型是值类型.如果创建了新的字符串,那么当其进行常量 ...
- EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充
EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...
随机推荐
- 博弈---ZOJ 3057 Beans Game(DP博弈)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3057 有豆类三个桩.TT和DD挑选任意数量的豆子从任何两堆轮流任何桩或相同 ...
- C#高级编程(第六版)学习:第三十一章:Windows窗体
第三十一章 Windows窗体 创建Windows窗体应用程序 在文本编辑器中输入: /* * form.cs * a simple windows form * */ using System; u ...
- Java JVM多线程
- 安装DHCP 服务器 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码
DHCP服务详解 前言:动态主机配置协议,给局域网内的主机分配IP地址,子网掩码,网关,DNS ARP协议 arp: address resolveing protocol (地址解析协议) 实现:I ...
- Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt768
转自:http://blog.csdn.net/droidphone/article/details/8434768 Multi-touch (MT) Protocol --------------- ...
- IF与SWITCH
今晚刚刚看了一点儿<大话设计模式>这本书,看到它示例的第一个程序,好像有点理解IF与SWITCH的区别了.大致的思考了总结出来. IF适用于每个条件都必须判断,就是IF语句中的判断是不同类 ...
- redis 同步化操作
异步化操作是很麻烦的的.不好控.下面介绍个同步化的库bluebird.用法很简单.看下你还子就知道了 const redis = require('redis'); const bluebird = ...
- 第157天:canvas基础知识详解
目录 一.canvas简介 1.1 什么是canvas?(了解) 1.2 canvas主要应用的领域(了解) 二.canvas绘图基础 2.0 sublime配置canvas插件(推荐) 2.1 Ca ...
- day 008 文件操作
08. 万恶之源-⽂文件操作本节主要内容:1. 初识⽂文件操作2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 其他操 ...
- WebGL画一个10px大小的点
WebGL程序在屏幕上同时使用HTML和javascript来创建和显示三维图形.WebGL中新引入的<canvas>元素标签,它定义了网页上的绘图区域. 由于<canvas> ...