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 值返回

     

  • 相关阅读:
    人物-商界-张近东:张近东
    人物-商界-许家印:许家印
    iptables-save
    iptables-restore
    iptables
    ipcs
    ipcclean
    ipc
    ip
    install-info
  • 原文地址:https://www.cnblogs.com/qinguoyi/p/7252315.html
Copyright © 2011-2022 走看看