这是自己用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. 移动端 h5 uniapp 读,写,删本地文件或sd文件

    移动端 h5 uniapp 读,写,删本地文件或sd文件 应用场景: 当我们需要做离线应用或者是加载本地文件时使用到此方法.(本篇文章给大家分享访问app私有文件目录,系统公共目录,sd外置存储的文件 ...

  2. Noip模拟67 2021.10.3

    还是困,不过已经可以用脑子思考问题了 T1 数据恢复 没啥明确的算法,可以说是贪心? 考虑部分分, 链的直接扫, 对于菊花的发现只要根节点在第一个,剩下的点位置不重要 那么按照$a/b$排序,扫一遍就 ...

  3. [火星补锅] 水题大战Vol.2 T2 && luogu P3623 [APIO2008]免费道路 题解

    前言: 如果我自己写的话,或许能想出来正解,但是多半会因为整不出正确性而弃掉. 解析: 这题算是对Kruskal的熟练运用吧. 要求一颗生成树.也就是说,最后的边数是确定的. 首先我们容易想到一个策略 ...

  4. 生产环境部署springcloud微服务启动慢的问题排查

    今天带来一个真实案例,虽然不是什么故障,但是希望对大家有所帮助. 一.问题现象: 生产环境部署springcloud应用,服务部署之后,有时候需要10几分钟才能启动成功,在开发测试环境则没有这个问题. ...

  5. 认识Linux系统中的inode,硬链接和软链接

    在学习和创建软链接遇到了一点问题,总结一下: 在当前文件夹下面建立了两个临时文件夹tempdir1和tempdir2,然后在tempdir2里面创建了一个hello文件,然后用指令ln -s temp ...

  6. 最近公共祖先(lca)与树上叉分

    lca的定义不在过多解释, 代码如下: inline void bfs() { queue<int>q; deep[s]=1;q.push(s); while(!q.empty()) { ...

  7. CF398A Cards | 贪心

    题目链接 我怎么连这种题都做得那么艰难-- 可以发现一些结论,然后枚举'x'被分成几段就好了. 我真的越来越菜 #include<iostream> #include<cstdio& ...

  8. hdu 1227 Fast Food(DP)

    题意: X轴上有N个餐馆.位置分别是D[1]...D[N]. 有K个食物储存点.每一个食物储存点必须和某个餐厅是同一个位置. 计算SUM(Di-(离第i个餐厅最近的储存点位置))的最小值. 1 < ...

  9. openssh 8.2 升级 8.3

    openssh 8.2 存在安全漏洞,升级为 openssh 8.3 需要安装的包:openssh-8.3p1.tar.gz.zlib-1.2.11.tar.gz.openssl-1.1.1g.tar ...

  10. 快速排序--洛谷卡TLE后最终我还是选择了三向切割

    写在前边 这篇文章呢,我们接着聊一下排序算法,我们之前已经谈到了简单插入排序 和ta的优化版希尔排序,这节我们要接触一个更"高级"的算法了--快速排序. 在做洛谷的时候,遇到了一道 ...