这是自己用stl实现的一些字符串处理函数和常用的字符串处理技巧,经验正基本无误,可直接使用,若有问题,可相应列出

包括:split

string to int

int to string

join

#include <string.h>
#include <vector>
#include <string>
//字符串分割函数,类似python的split
vector<string> split(char s[],const char *delim)
{
char *token = strtok(s,delim);
vector<string> vstr;
while(token!=NULL){
string stmp = token;
vstr.push_back(stmp);
token = strtok(NULL,delim);
}
return vstr;
}
//若用string调用如下
string s="192.168",sm=".";
vector<string> ss=split(const_cast<char *>(s.c_str()),sm.data()); //参数都为string版
vector<string> split(string s,string delim)
{ char *ss=const_cast<char *>(s.c_str());
const char *ddelim= delim.data();
char *token = strtok(ss,ddelim);
vector<string> vstr;
while(token!=NULL){
string stmp = token;
vstr.push_back(stmp);
token = strtok(NULL,ddelim);
}
return vstr;
}
//以下给出类似于Python 中join功能的实现,后续不断完善
string join(const vector<string> &vs,const string &s)
{
int n=vs.size();
string restr;
for(int i=0;i<n-1;++i)restr=restr+vs[i]+s;
restr +=vs[n-1];
return restr;
}
//char *或vector<char>转string vector<char> vs;
vs.push_back(char);
vs.push_back('\0'); //特别注意char* 转
string s;
s=string(vs.data());
char a[100]="6666666";
s=string(a); //列出自己实现的string to int( atoi)
int myAtoi(string str) {
if(str=="")return 0;
if(str.size()==1)
{
if(str[0]>'9'||str[0]<'0')return 0;
}
int beg=0;
while(str[beg]==' ')beg++;//越过前面的空字符
if((str[beg]>'9'||str[beg]<'0')&&str[beg]!='-'&&str[beg]!='+')return 0;//第一个非空字符非法
int sign=(str[beg]=='-')?-1:1; //判断符号
int j=(str[beg]=='+'||str[beg]=='-')?beg+1:beg;//判定何时开始计算
int res=0;
for(int i=j;i<str.size();++i)
{
if(str[i]>'9'||str[i]<'0')break;//遇到非数字即不看后面的内容
res=res*10+(str[i]-'0');
}
return res*sign;
}
//列出自己实现的unsigned int转string,无bug
string itostring(unsigned int a)
{
if(a==0)return "0";
vector<char> vc;
while(a){
unsigned int tmp = a%10;
vc.push_back(tmp+'0');
a=a/10;
}
int n=vc.size();
string s(n,'0');
for(int i=n-1;i>=0;--i)s[n-1-i]=vc[i];
return s;
}
//atoi 或者 itoa (int to string)int atoi(const char *nptr);
char*itoa(int value,char*string,int radix);
char *strtok(char s[], const char *delim);
//strod字符串转浮点
string = "3.1415926 This stopped it";
x = strtod(string, &stopstring);
printf("string = %s\n", string);
printf("strtod = %f\n", x);
printf("Stopped scan at: %s\n", stopstring);
string = 3.1415926 This stopped it
strtod = 3.141593
Stopped scan at: This stopped it
string = -1011 This stopped it 1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可。 EX: const char* tmp = "tsinghua". string s = tmp; (2) string转换为const char*,利用c_str()或者data() EX: string s = "tsinghua"; const char*tmp = s.c_str(); const char *tmp = s.data(); 2. char*和const char*之间的转换 (1) const char*转化为char*,利用const_cast<char*> EX: const char* tmp = "tsinghua"; char* p = const_cast<char*>(tmp); (2) char*转化为const char*,直接赋值即可。 char* p = "tsinghua". const char* tmp = p; 3. char*和string之间的转换 有了1和2的基础,char*和string转化就很简单了。 (1)char*转化为string,直接赋值即可。 EX: char* p = "tsinghua". string str = p; (2)string转化为char*,走两步,先是string->const char*,然后是const char*->char* EX: string str = "tsinghua"; char* p = const_cast<char*>(str.c_str()):

C++常用的字符串处理函数-全的更多相关文章

  1. php中常用的字符串查找函数strstr()、strpos()实例解释

    string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 1.$haystack被查找的字 ...

  2. LoadRunner中常用的字符串操作函数

    LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string);               strc ...

  3. PHP中常用的字符串格式化函数总结

    注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串. 一.取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置.用户在表 ...

  4. ASP.NET中常用的字符串分割函数

    asp.net字符串分割函数用法 先来看个简单的实例 但是其数组长度却是25,而不是3.下面这种方法是先将“[111cn.net]”替换成一个特殊字符,比如$,在根据这个字符执行Split 例如下面我 ...

  5. PHP开发中常用的字符串操作函数

    1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行 ...

  6. C常用字符字符串处理函数

    1.strtok();字符串分片函数

  7. C语言中常用的字符串操作函数

    程序开头要声明 #include <string.h> 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char ...

  8. C语言中常用的字符串处理函数总结

    C语言中字符串处理函数备注 此文仅用于自己研究和记录 字符串处理函数 1. char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存 ...

  9. SQL中常用的字符串LEFT函数和RIGHT函数详解!

    今天继续整理日常可能经常遇到的一些处理字符串的函数,记得点赞收藏!以备不时之需!看到最后有惊喜! LEFT(expression, length)函数 解析:从提供的字符串的左侧开始提取给定长度的字符 ...

随机推荐

  1. PCIE学习笔记--TLP Header详解(三)

    目录篇地址为:http://blog.chinaaet.com/justlxy/p/5100053481 Completions Completions的TLP Header的格式如下图所示: 这里来 ...

  2. Linux Ubuntu stty 使用

    stty(set tty)命令用于显示和修改当前注册的终端的属性. 该命令是一个用来改变并打印终端行设置的常用命令. stty -a #将所有选项设置的当前状态写到标准输出中 old_stty_set ...

  3. Open vSwitch 应用实践

    基础配置以及要点: 1.交换机创建和端口的配置 1) 创建一个新的 OVS 交换机[格式:$ ovs-vsctl add-br [名称]] $ovs-vsctl add-br ovs-switch 2 ...

  4. C++ IO基础

    一:c++I/O处理,按照数据输入输出的过程,形象的将其看做流.数据在流中进行传播. 所有的流有两个基类:ios和streambuf类 streambuf:提供对缓冲区的基本操作,设置缓冲区等 ios ...

  5. application.properties文件配置

    # 服务端口 server.port=8001 # 服务名 spring.application.name=service-edu # 环境设置:dev.test.prod spring.profil ...

  6. 端口被占用(启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法)

    一.问题描述 在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误**: java.rmi.server.ExportException: Po ...

  7. PTA甲级1094 The Largest Generation (25分)

    PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...

  8. Android ANR从原理到日志分析,记下来就够了

    站在巨人的肩膀上可以看的更远 做一个优秀的搬运工 Android 彻底理解安卓应用无响应机制 Android ANR日志分析全面解析 优秀的文章不可独享,要扩散,要做好笔记,哈 <沁园春长沙&g ...

  9. GO语言数据结构之链表

    链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分: ...

  10. SpringCloud升级之路2020.0.x版-35. 验证线程隔离正确性

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 上一节我们通过单元测试验证了重试的正确性,这一节我们来验证我们线程隔离的正确性,主要包括: ...