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理论上 ...
随机推荐
- 王者荣耀交流协会scrum立会20171111
1.立会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:高远博 2.时间跨度: 2017年11月10日 18:00 - 18:33 ,总计33分钟. 3.地 点: 一 ...
- Java中的Object类的toString()方法,equals()方法
Object类是所有类的父类,若没有明确使用extends关键字明确表示该类继承哪个类,那么它就默认继承Object类,也就可以使用Object中的方法: 1.toString 如果输出一个对象的时候 ...
- 【第二周】【作业五】Scrum 每日站会
1.首先来看一下什么是Scrum: Scrum是一种敏捷软件开发的方法学,用于迭代式增量软件开发过程.Scrum在英语是橄榄球运动中争球的意思. 虽然Scrum是为管理软件开发项目而开发的,它同样可以 ...
- 明白JavaScript原型链和JavaScrip继承
原型链是JavaScript的基础性内容之一.其本质是JavaScript内部的设计逻辑. 首先看一组代码: <script type="text/javascript"&g ...
- CKeditor、CKFinder的安装配置
CKEditor是不集成文件上传与管理功能的,文件上传管理功能被集成在CKFinder中,这是一个收费的商业软件. 如需要文件上传与管理功能建议使用FCKeditor或者手动破解CKFinder. 下 ...
- 在线webservice
腾讯QQ在线状态 WEB 服务Endpoint: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx Disco: http:// ...
- sublime text 多行代码注释快捷键
多行选择后按下ctrl+/ 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中 ...
- webgl学习笔记一-绘图单点
写在前面 WebGl(全称:Web Graphics Library : web图形库) 是基于OpenGL ES 2.0的3D绘图协议. WebGL完美地解决了现有的Web交互式三维动画的两 ...
- python的N个小功能(连接数据库并下载相应位置的图片)
#################################################################################################### ...
- 只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类
只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类