【C++】:STL标准库之string

时间:2022-05-12 16:02:35
//============================================================================
// Name : InsertSort.cpp
// Author : YL
// Version :
//============================================================================
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s = "fsafdsfa";
    cout << s.c_str() << endl;
    // 想要输出string类型的变量,不能直接输出要用s。c_str()这个方法



    char chA = s[5];
    char chD = s.at(5);
    cout <<"chA = "<<chA<<"\nchD = "<<chD<<endl;
    // 用上述两种方式调用都是一样的,只是用s.at()这个方式可以做溢出检测
    // 比如当index超出s的长度时,这个会抛出out_of_range的异常。
    // output:
    // chA = s
    // chD = s


    char e[8] = {0};
    int iCount = s.copy(e,5,2);
    cout<<"e="<<e<<"\nicount="<<iCount<<endl;
    //output
    // e = afd,表示了从下标为2的位置开始输出3个字符。
    // icount = 5,表示了函数返回了输出字符的个数


    string strA("yuanlei");
    string strB("handsome");
    strB += strA;   //此时strB为 "yuanlei handsome"
    strB +="!";
    strB.append("123");//该函数和python中的一样的效果,在字符串末尾加上对应的字符。
    strB.append("abcd",2);
    string strC("STLtest");
    strB.append(strC,3,3);
    strB.append(5,'U');
    cout << strB.c_str()<<endl;
    //output....


    string strA("acdq");
    string strB("bab");
    string strC("bab");
    string strD("Bab");
    int iAB = strA.compare(strB);
    int iBA = strB.compare(strA);
    int iBC = strB.compare(strC);
    int iCD = strC.compare(strD);
    //output
    //iAB =-1
    //iBA = 1
    //iBC = 0
    //iCD = 1



    string strA("UIPower");
    string strB = strA.substr(2,3); //此时strB的内容为"Pow"
    strA.replace(2,2,"-----");      //此时strA的内容为"UI-----wer"
    strA.erase(2,4);   //删除某个位置
    string strB("hello");
    strA.swap(strB); //相当于把strA和strB互换了一下
    //output
    //Pow


    //string的查找
    //看下面的图pain




    return 0;
}

编码统一化,编写单一源代码

如果我们想建立两个版本的程序,一个处理ASCII字符串,另一个处理Unicode字符串,最好的解决办法就是比那些既能够按照ASCII编译又能够按照Unicode编译的单一源代码。把以下代码加入到程序中,只要修改一个宏就能满足我们的要求了。

#ifdef _UNICODE
    typedef wstring tstring;
    typedef wchar_t tchar;
    #define _T(X) L##x
#else
    typedef string tstring;
    typedef char tchar;
    #define _T(X) x
#endif