int StringUtil::intFromString(字符串数据)
{
//注意atoi是非标准C函数
返回 atoi(data.c_str());
}
字符串 StringUtil::stringFromInt(int 数据)
{
char tmp[];
memset(tmp,,);
sprintf(tmp,"%10d",数据);
返回字符串(tmp);
}
double StringUtil::doubleFromString(字符串数据)
{
双tmp;
sscanf(data.c_str(),"%lf",&tmp);
返回 tmp;
}
字符串 StringUtil::stringFromDouble(双数据)
{
char tmp[];
memset(tmp,,);
sprintf(tmp,"%20.3lf",数据);
返回字符串(tmp);
}
float StringUtil::floatFromString(std::string data)
{
浮动tmp;
sscanf(data.c_str(),"%f",&tmp);
返回 tmp;
}
std::string StringUtil::stringFromFloat(浮点数据)
{
char tmp[];
memset(tmp,,);
sprintf(tmp,"%20.3f",数据);
返回字符串(tmp);
}
bool StringUtil::boolFromString(std::字符串数据)
{
if(data.compare("true") == )
返回真;
否则
返回 false;
}
std::string StringUtil::stringFromBool(bool 数据)
{
如果(数据)
返回字符串(“true”);
否则
返回字符串(“假”);
}
矢量
StringUtil::splitStringToArray(std::字符串源, std::字符串分隔符)
{
矢量结果;
if(!source.empty())
{
字符串::size_type开始=;
字符串::size_type结束=;
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);
开始=结束+ sepSize;
}
//最后一项,注意如果最后一个是分隔符,则最后一个元素是空字符串
if(begin <= source.size())
{
string item = source.substr(begin,source.size() - begin);
result.push_back(item);
}
}
返回结果;
}
std::string StringUtil::linkArrayToString(向量数组,std::字符串分隔符)
{
字符串结果;
if(array.size() > )
{
unsigned int limit = array.size() - ;
for(无符号整数 i=;i< limit;++i)
{
结果+=数组[i];
结果+=分隔符;
}
结果+=数组[限制];
}
返回结果;
}
映射 StringUtil::splitStringToMap(std::string source, std::string PrimarySep, std::string secondarySep)
{
矢量数组= StringUtil::splitStringToArray(source,primarySep);
矢量 tmpArray;
地图结果;
for(unsigned int i = ; i< array.size();++i)
{
tmpArray = StringUtil::splitStringToArray(array[i],secondarySep);
if(tmpArray.size() >= )
{
结果[tmpArray[]] = tmpArray[];
}
}
返回结果;
}
std::string StringUtil::linkMapToString(map tmpMap, std::string PrimarySep, std::string secondarySep)
{
矢量 tmpArray;
字符串 tmpStr;
map::迭代器 it = tmpMap.begin();
for(;it!=tmpMap.end();++it)
{
tmpStr = it->first+secondarySep+it->second;
tmpArray.push_back(tmpStr);
}
返回 StringUtil::linkArrayToString(tmpArray,primarySep);
}
std::string StringUtil::trimFront(std::string 数据)
{
无符号整型 i = ;
for(;i
{
}
if(ireturn data.substr(i,data.size()-i);
否则
返回字符串("");
}
std::string StringUtil::trimBack(std::string 数据)
{
int i = data.size()-;
for(;i>=&&www.sychzs.cn(i)==' ';--i)
{
}
如果(i>=)
return data.substr(,i+);
否则
返回字符串("");
}
std::string StringUtil::trim(std::string 数据)
{
字符串 tmp = StringUtil::trimFront(data);
返回 StringUtil::trimBack(tmp);
}
http://www.sychzs.cn/guoxiaoqian/p/4113339.html
虽然没有研究过string的源码,但是可以肯定的是,string的内存空间是在堆上开辟的,而且是它自己负责释放空间,不需要我们参与。
我们用动态分配的字符串指针初始化字符串对象retStr。它会执行一个复制过程,并将字符串存储到retStr自己的内存空间中。之后retStr就和ret没有关系了,所以我们要记得释放ret:
1 char* ret = (char*)malloc(len_str);
2 memset(ret,0,len_str);
3 //操作ret ...
4 字符串 retStr(ret);
5 免费(ret);
http://www.sychzs.cn/guoxiaoqian/p/3944805.html
-->