string主要操作函数
参考博客:http://blog.csdn.net/zhenyusoso/article/details/7286456
std::string illegal(" \t\f\v\n\r\\/") 表示对其illegal字符串进行赋值。依次是空格,水平制表,换页,垂直制表,回车,左斜杠。
1.匹配查找字符,字符串,例如:在字符串中查找单个字符c。
函数find_first_of(): 查找在字符串中第1个出现的字符c,而函数find_last_of()查找最后一个出现的c。匹配的位置是返回值。如果没有匹配发生,则函数返回-1.
int find_first_of(char c, int start = 0):查找字符串中第1个出现的c,由位置start开始。如果有匹配,则返回匹配位置;否则,返回-1.默认情况下,start为0,函数搜索整个字符串。
int find_last_of(char c):查找字符串中最后一个出现的c。有匹配,则返回匹配位置;否则返回-1.该搜索在字符末尾查找匹配,所以没有提供起始位置。
int find_last_not_of(string):从后向前查找不在string对象中的字符 从后向前在string对象中查找第一个不在str, s或c中的字符,返回它的位置。当指定pos时,只查找pos或pos之前的内容,忽略pos之后的内容。
2.字符串中提取连续字符串
string substr(int start=0,int count= -1); 从起始位置开始复制字符串中的count 个字符,并返回这些字符作为子串。 如果字符串尾部小于count字符或者count 为-1,则字符串尾停止复制。 如果不使用参数调用只包括位置start,则substr()返回从位置开始到字符串尾部的子串。
3.添加和删除字符串
字符连接(+、+=)是在字符串尾添加字符串。insert()函数扩展了这个能力,允许在任意位置添加字符串。为了从字符串。为了从字符串中删除字符串,函数erase()可以从指定的位置开始删除字符。
void insert(int statr,const string& s):将子串s放入字符串中,起始于位置start。插入操作增加了原始字符串的长度。
void erase(int start=0,int count=-1):从start开始,从字符串中删除count个字符。如果现有的字符串少于count个字符,或者count为-1,则删除到字符串尾部的所有字符。
4.c_str()返回c语言风格字符串的地址
将字符串对象转换为C语言风格字符串。
// open 要求文件名是c语言风格的字符串
string filename = "input.dat";
fin.open(filename.c_str());
5.分离字符串路径的方法
提取目标文件的完整路径中的文件路径、文件名,修改扩展名等方法。
主要思想:
1.输入文件名,用函数find_last_of()在字符串中搜索最后一个出现的"/"。这个字符确定了路径的结尾和文件名的开始。
2.路径是由最后一个"/"前所有字符串组成的子串。文件名是最后一个"/"后的所有字符。使用最后一个"/"的位置和substr()提取出路径和文件名。
3.扩展名是文件名中最好一个"."后的字符串。调用find_last_of()搜索最后一个匹配,则复制文件名,删除当前扩展名,并添加新的扩展名"exe"。 输出产生的可执行文件名。
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main()
{
string pathname, path, filename,executableFile;
// ‘/’和 '.'的位置
int backslashIndex, dotIndex;
cout << "Enter the path name: ";
cin >> pathname;
// 识别最后一个'/'的位置。注意:由于
// 转义码如'/n'以/起始,
// c++ 使用'//'表示 /
backslashIndex = pathname.find_last_of('//');
//路径名是最后一个'/'之前的字符
path = pathname.substr(0,backslashIndex);
cout << "path: " << path << endl;
// 路径名尾部是文件名
filename = pathname.substr(backslashIndex+1,-1);
cout << "Filename: " << filename << endl;
// 查看文件名是否有'.cpp'扩展名。
// 首先找到最后一个'.'的位置。 如果
// 没有'.',则dotIndex为-1
dotIndex = filename.find_last_of('.');
//测试是否有'.',其余的字符是否为"cpp"
if (dotIndex != -1 && filename.substr(dotIndex+1) == "cpp")
{
// 删除"cpp",并加上"exe"设置可执行字符串
executableFile = filename;
executableFile.erase(dotIndex+1,3);
executableFile+="exe";
cout << "Executable: " << executableFile << endl;
}
return 0;
}
6.安全函数strcpy_s,strcat_s
strcat_s脱胎于strcat,用于两个字符串的链接,strcat(str1,str2)直接返回新的str1.但在vs2005后,为了安全起见,重新添加了些功能和api和以前不同。比如strcat_s.
为什么是安全起见呢?对于老的你添加str2的时候如果st1溢出怎么办?所以新的strcat_s规定,有三个参数,必须指定str1的大小。其实不指定也可以
char string[20]="123";
strcat_s(string,sizeof(string),"456");
printf("%s",string);这样20个元素,足够装下123456了。
strcpy_s函数脱胎于strcpy,用法与上同,三个参数,两个参数都可以。
7.tolower()函数和strstr()函数
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
定义函数:int tolower(int c);
函数说明:若参数 c 为大写字母则将该对应的小写字母返回。
返回值:返回转换后的小写字母,若不须转换则将参数c 值返回
string主要操作函数的更多相关文章
- Redis系列-存储篇string主要操作函数小结
通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ...
- python中string的操作函数
在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法 ...
- 字符串操作函数<string.h>相关函数strcpy,strcat,等源码。
首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...
- Delphi中复制带有String的记录结构时不能使用Move之类的内存操作函数
请看下面的代码: program TestRecord; {$APPTYPE CONSOLE} uses SysUtils, Math; type TRecordA = record Na ...
- Python中字符串操作函数string.split('str1')和string.join(ls)
Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...
- dedecms功能性函数封装(XSS过滤、编码、浏览器XSS hack、字符操作函数)
dedecms虽然有诸多漏洞,但不可否认确实是一个很不错的内容管理系统(cms),其他也不乏很多功能实用性的函数,以下就部分列举,持续更新,不作过多说明.使用时需部分修改,你懂的 1.XSS过滤. f ...
- Delphi文件操作函数
文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...
- byte数据的常用操作函数[转发]
/// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...
- PHP常用的文件操作函数集锦
以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...
随机推荐
- 组合数学——cf991E
/* 如果有某一位,那么这一位必须存在 枚举所有情况,计算每种情况时0额外另算 */ #include<bits/stdc++.h> using namespace std; #defin ...
- 解决eclipse启动时出现“failed to load the jni shared library”
如何解决启动eclipse出现failed to load the jni shared library的问题 问题描述:启动eclipse时,出现以下弹出框 此时,即表示eclispe和jdk位数不 ...
- (转)第04节:Fabric.js用路径画不规则图形
在Canvas上画方形.圆形.三角形都是很容易的,只要调用fabric对应的方法就可以了,但这些都是规则的图形,如果你想画一个不规则的图形,这时候你可以用fabric.js提供的路径绘图方法.所谓路径 ...
- Windows下DNS ID欺骗的原理与实现
域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息.通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需 ...
- Redis 的 4 大法宝,2018 必学中间件!
Redis是什么? 全称:REmote DIctionary Server Redis是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议.支持网络.可基于内存亦可持 ...
- Spring中AOP的实现
Spring中整合了AOP的功能,虽然有不足,没有专门做AOP框架的那么完美,但是用一用感觉还是不错的 一些概念: AOP 面向切面编程 aspect 切面/切面类(我个人认为一个真正被解耦的程序,切 ...
- java笔试之完全数计算
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数. 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身. 例如:28,它有约数1.2.4.7.14. ...
- 常用Linux Tips(不定期更新)
查看本机所有开放端口 lsof -i -P | grep -i listen 查看一段文本单词出现频率 awk '{b[length($0)]++;total_lines++;for(i=1;i< ...
- h5页面在不同ios设备上的问题总结
1.日期问题 对于yyyy-mm-dd hh:mm:ss 这种格式在ios系统不识别 时间格式化的时候,在浏览器端处理好好的,到了手机端,就变成NAN,或者null,这种情况,是ios系统不能转化这种 ...
- 【转载】TCP演进简述
TCP演进简述 http://www.cnblogs.com/fll/ 一.互联网概述 TCP,即传输控制协议,是目前网络上使用的最多的传输协议,我们知道,整个互联网的体系结构是以IP协议提供的无连接 ...