#pragma once                  //防止文件被多重包含
#include <stdio.h>
#include <stdlib.h>
#include <string>             //字符串
#include <iostream>           //数据流
#include <memory>             //内存操作
#include <regex>              //正则表达式
#include <chrono>             //正则表达式   vs2012后有using namespace std;int main()
{string strlp="luanpeng";char* charlp = "luanpeng";char chararrlp[] = "luanpeng";//char*和char[]转str,直接赋值strlp=charlp;strlp=chararrlp;//str转char*const char* charlp1 = strlp.data();   //data返回不带\n,c_str返回带\n。strcpy(charlp,strlp.c_str());  //c_str()并不新建内存,c_str()和data只能转换为const的变量。strcpy为c语言复制内存函数//str转char[]char p[5];strlp.copy(p,2,1);  //2表示赋值的长度,1表示开始位置p[2]='\n';   //手动添加'\n'}//字符串转化大小写
string lower(string str)
{transform(str.begin(),str.end(),str.begin(),tolower);return str;
}//字符串转化大小写
string upper(string str)
{transform(str.begin(),str.end(),str.begin(),toupper);return str;
}//去除字符串的首尾
void trim_string(string &s)     //字符串去除首尾
{  if (!s.empty())   {  s.erase(0,s.find_first_not_of(" "));  s.erase(s.find_last_not_of(" ") + 1);  }
}//按字符分割字符串
void split_char(const std::string& yuan, std::vector<std::string>& arr, const std::string& split)   //多字符分割
{std::string::size_type pos1, pos2;pos2 = yuan.find_first_of(split);pos1 = 0;while(std::string::npos != pos2){if (pos1!=pos2)arr.push_back(yuan.substr(pos1, pos2-pos1));pos1 = pos2 + 1;pos2 = yuan.find_first_of(split, pos1);   //find_first_of方法查询任意一个字符首次出现的位置,允许了使用多个分割字符}if(pos1 != yuan.length())  //分割剩余的最后一个字符串arr.push_back(yuan.substr(pos1));
}//按字符串分割字符串
void split_string(const std::string& yuan, std::vector<std::string>& arr, const std::string& split)   //字符串分割
{std::string::size_type pos1, pos2;pos2 = yuan.find(split);pos1 = 0;while(std::string::npos != pos2){if (pos1!=pos2)arr.push_back(yuan.substr(pos1, pos2-pos1));pos1 = pos2 + split.size();pos2 = yuan.find(split, pos1);   //find_first_of方法查询任意一个字符首次出现的位置,允许了使用多个分割字符}if(pos1 != yuan.length())arr.push_back(yuan.substr(pos1));
}//替换全部子字符串
void  replace_string(string&   str,const   string&   old_value,const   string&   new_value)
{   for(string::size_type   pos(0);   pos!=string::npos;   pos+=new_value.length())   {   if(   (pos=str.find(old_value,pos))!=string::npos   )   str.replace(pos,old_value.length(),new_value);   else   break;   }
}//字符串长度
int length(string& str)
{return str.length();
}//连接两个字符串,每个字符串最右边的空格被裁切
string strcat(string& a,string& s)
{string aa = a;string ss=s;aa.erase(aa.find_last_not_of(" ") + 1);  ss.erase(ss.find_last_not_of(" ") + 1);  return aa+ss;
}//比较字符串是否相等
bool strcmp(string& a,string& b)
{if (a==b)return true;return false;
}//比较字符串前n个字符相等
bool strncmp(string& a,string& b,int n)
{string aa=a.substr(0,n);string bb=b.substr(0,n);if (aa==bb)return true;return false;
}//比较字符串是否相等,不区分大小写
bool strcmpi(string& a,string& b)
{string aa=lower(a);string bb=lower(b);if (aa==bb)return true;return false;
}//比较字符串前n个字符相等,不区分大小写
bool strncmpi(string& a,string& b,int n)
{string aa=a.substr(0,n);string bb=b.substr(0,n);aa=lower(aa);bb=lower(bb);if (aa==bb)return true;return false;
}//检测字符串中每个字符时否属于英文字母
bool isletter(string& a)
{for (int i=0;i<a.length();i++){if(a[i]<'a' || a[i]>'Z')return false;}return true;
}//检测字符串中每个字符是否属于格式字符(空格,回车,制表,换行符等)
bool isspace(string& a)
{for (int i=0;i<a.length();i++){if(a[i]!=' ' && a[i]!='\n' && a[i]!='\t' && a[i]!='\r')return false;}return true;
}//删除结尾空格
void deblank(string& a)
{a.erase(a.find_last_not_of(" ") + 1);
}//裁切字符串的开头和尾部的空格,制表,回车符
void strtrim(string& str)
{trim_string(str);
}//替换子串
string strrep(string s,string& sub,string& replace)
{replace_string(s,sub,replace);return s;
}//分割字符串成两段
string* strtok(string s,char split)
{string* p=new string[2];std::string::size_type pos1=s.find(split);if (pos1==std::string::npos){p[0]=s;p[1]="";}else{p[0]=s.substr(0,pos1);p[1]=s.substr(pos1+1);}return p;}//创建有n个空格组成的字符串
string blanks(int n)
{string p="";for(int i=0;i<n;i++)p=p+" ";return  p;
}//查找str1和str2中,较短字符串在较长字符串中出现的位置,没有出现返回空数组
vector<int> findstr(string& s,string& sub)
{vector<int> all;std::string::size_type pos1=s.find(sub);if (pos1!=std::string::npos){all.push_back(pos1);pos1=s.find(sub);}return all;
}//将数字转换为数字字符串
string num2str(double value)
{return to_string(value);
}//把数值数组转换为整数数字组成的字符数组
string int2str(int value)
{return to_string(value);
}//将数字字符串转换为数字
double str2num(string str)
{return stod(str);
}

c++字符串string操作全解相关推荐

  1. 安卓文件操作全解:内部文件、公共文件、私有文件、app静态文件

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓文件操作全解:内部文件.公共文件.私有文件.app静态文件. 读内部文件(当前应用程序文件夹下文件) public static String o ...

  2. js系列教程6-BOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  3. js系列教程1-数组操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  4. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  5. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  6. 安卓网络操作全解:发起请求,解析响应

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓网络操作全解. 发起请求,解析xml响应流 //发起一个请求 private void connect(String urlpath) {//启动 ...

  7. js系列教程7-DOM操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  8. jquery系列教程2-style样式操作全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...

  9. jquery系列教程5-动画操作全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

最新文章

  1. git 提交丢失Warning, you are leaving 2 commits behind,
  2. PyQt:成功解决PyQt4升级到PyQt5改变的函数或方法
  3. linux源代码调用,linux – 哪里可以找到系统调用源代码?
  4. RSS、Atom和Feed概念与实现(django)
  5. [物理学与PDEs]第1章习题6 无限长载流直线的磁场
  6. 1.2 未来人人皆微商
  7. 问题三十四:怎么用ray tracing画任意长方体(generalized box)
  8. VMWare 安装XP-SP3虚拟机
  9. 《财务自由之路III》阅读笔记2021-03-18
  10. 加密解密在区块链中的应用
  11. Oracle`.`聚宝盆
  12. 使用python+selenium发送QQ邮件
  13. B端产品运营:学习笔记
  14. 怎么用命令远程重启服务器,使用命令行重启Windows服务器的方法
  15. Java中 支持多继承吗?
  16. 字节跳动启动大规模校招
  17. Windows桌面实现之八(DirectX HOOK 方式截取特殊的全屏程序之二)
  18. 2022年湖南医院三基考试泌尿外科综合模拟题及答案
  19. groupby函数分组统计
  20. Note10:基于STM32H7+HAL+CubeMX+DMA+SPI+串口中断+定时器+RTC的多传感器数据采集系统(2*ADXL355和ADXL375通过Sync时序同步)

热门文章

  1. 免费语音识别_免费 语音识别_免费语音识别api - 云+社区 - 腾讯云
  2. 科大讯飞新一代语音识别系统揭秘
  3. fiddler修改支付金额_Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+代码
  4. Vue3.0 + Ts 项目框架搭建四:配置 Svg-Icon、Icon图标
  5. jQuery 图表插件 jqChart 使用
  6. 修改手游服务器端数据库,手游服务端框架之配置与玩家数据库设计
  7. mysql数据库函数详解_MySQL数据库之字符函数详解
  8. 计算机知识wendang,计算机基础知识Microsoft Word 文档
  9. lsof u mysql wc l_lsof命令详解
  10. asp.net Ajax表单提交 二种方式数据处理 asp.net