zoukankan      html  css  js  c++  java
  • string主要操作函数

    参考博客:http://blog.csdn.net/zhenyusoso/article/details/7286456

    std::string illegal(" fv \/") 表示对其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 值返回

     

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/qinguoyi/p/7252315.html
Copyright © 2011-2022 走看看