Note C++ string

11533 ワード

C++stringのいくつかの操作記録
#include
  • 定義
  • #include 
    #include 
    
    int begin = 0;
    int mid = 2;
    int len = 3;
    int end = 8;
    int pos = 0;
  • 構造
  • string str = "A";
    string str1(str);
    string str2("A");
    string str3("abcd", len);   // str3 == "abc"
    string str4("abcd", begin, len); // str4 = "abcd" begin  ,len 
    string str5(len, 'a'); //    len 'a'
    
  • 通常length、size、capacity、empty、resize、reserve
  • // 2     
    len = str.length(); //   
    len = str.size();   //   
    int capacity = str.capacity(); //   
    
    str.resize(len);        // str    len  ,   \0  
    str.resize(len, 'a');   // str    len  ,   'a'  
    str.reserve(len);       //         
    
    bool isEmpty = str.empty();
    
  • push_を追加back、append、insert
  • str.push_back('a');
    str.append("ABC");
    
    //     
    str.insert(begin, len, 'a'); // str begin    len 'a'  
    str.insert(begin, "abc"); // begin    
    str.insert(begin, "abc", len); // begin    "abc" len   
    str.insert(begin, "abc", begin, len); // begin     "abc" begin  ,len 
    
    //      
    // iterator insert(const const_iterator _Where, _CRT_GUARDOVERFLOW const size_type _Count, const _Elem _Ch)
    str.insert(str.begin(), len, 'a');
    // iterator insert(const const_iterator _Where, const _Iter _First, const _Iter _Last)
    str.insert(str.begin(), str2.begin(), str2.end());
    
    
  • erase、clear、assign
  • を削除
    str.erase(mid); //   mid  ,      
    str.erase(mid, len);  //   mid  ,  len 
    str.clear();
    
    str.assign("abc");  //   str,   "abc"
    str.assign("abcd", len); //   ,  len   
    str.assign("abccc", begin, len);    //   , begin  ,  len
    
  • swap、replace
  • を修正
    str.swap(str1); //   str1 str
    str.replace(begin, len, "abc"); //   begin  ,  len  
  • find、rfind、find_を検索first_of、find_last_of string::size_type、string::npos
  • //size_t find(const string & str, size_t pos = 0) const;
    //size_t find(const char* s, size_t pos, size_t n) const;
    //size_t find(const char* s, size_t pos = 0) const;
    //size_t find(char c, size_t pos = 0) const;
    // pos       n        n   
    pos = str.find('a'); //       ,    -1
    pos = str.find("abc");
    pos = str.find('a', begin); //  begin     
    pos = str.find("abc", begin, len); //  begin      "abc"  len  
    
    //     ,      
    pos = str.rfind('a');
    pos = str.rfind("abc");
    pos = str.rfind('a', begin); // begin  ,   
    pos = str.rfind("abc", begin, len);
    
    //size_t find_first_of(const string & str, size_t pos = 0) const;
    //size_t find_first_of(const char* s, size_t pos, size_t n) const;
    //size_t find_first_of(const char* s, size_t pos = 0) const;
    //size_t find_first_of(char c, size_t pos = 0) const;
    // pos       n        n   
    //                 
    str.find_first_of("abc");
    str.find_first_of("abc", begin);
    str.find_first_of("abc", begin, len);
    
    //size_t find_last_of(const string & str, size_t pos = npos) const noexcept;
    //size_t find_last_of(const char* s, size_t pos = npos) const;
    //size_t find_last_of(const char* s, size_t pos, size_t n) const;
    //size_t find_last_of(char c, size_t pos = npos) const noexcept;
    
    // string::size_type
    string::size_type pos = str.find(str2);
    // string::npos
    if (pos == string::npos) { }
    
        //       
        if (!s.empty()) {
            s.erase(0,s.find_first_not_of(" "));
            s.erase(s.find_last_not_of(" ") + 1);
        }
  • サブストリングsubstr
  • // string substr(size_t pos = 0, size_t len = npos) const;
    // pos             。              0,    0。
    // len        
    str2 = str.substr(begin);
    str2 = str.substr(begin, len);
    
  • 反転reverse
  • // algorithm
    reverse(str.begin(), str.end());    //   
    
  • 変換大文字と小文字transform、::toupper、::tolower
  • string strTrans = "A";
    transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::toupper);
    transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::tolower);
    
  • 比較compare
  • // compare
    //     0,   ASCII        
    //int compare(const basic_string & s) const;
    //int compare(const Ch * p) const;
    //int compare(size_type pos, size_type n, const basic_string & s) const;
    //int compare(size_type pos, size_type n, const basic_string & s, size_type pos2, size_type n2) const;
    //int compare(size_type pos, size_type n, const Ch * p, size_type = npos) const;
    str.compare("abc");
    
  • to_string
  • //            
    //std::string to_string(int value);
    //std::string to_string(long value);
    //std::string to_string(long long value);
    //std::string to_string(unsigned value);
    //std::string to_string(unsigned long value);
    //std::string to_string(unsigned long long value);
    //std::string to_string(float value);
    //std::string to_string(double value);
    //std::string to_string(long double value);
    str = to_string(1);
    
  • その他:c_str、data、copy
  • // c_str()    const char*  ,           
    // const char* string::c_str() const
    const char* strChar = str.c_str();
    
    // const char* string::data() const
    // data(): c_str()  ,              
    strChar = str.data();
    
    // size_type copy(_Out_writes_(_Count) _Elem* const _Ptr, size_type _Count, const size_type _Off = 0) const
    char charAry[20] = { 0 };
    str.copy(charAry, len, begin); // begin  ,  len    
    

     
    #include 
    #include 
    #include 
    
    using namespace std;
    
    class Solution {
    public:
        void Test() {
            int begin = 0;
            int mid = 2;
            int len = 3;
            int end = 8;
            int pos = 0;
    
            // 1   
            string str = "A";
            string str1(str);
            string str2("A");
            string str3("abcd", len);   // str3 == "abc"
            string str4("abcd", begin, len); // str4 = "abcd" begin  ,len 
            string str5(len, 'a'); //    len 'a'
    
            // 2     
            len = str.length(); //   
            len = str.size();   //   
            int capacity = str.capacity(); //   
    
            str.resize(len);        // str    len  ,   \0  
            str.resize(len, 'a');   // str    len  ,   'a'  
            str.reserve(len);       //         
    
            bool isEmpty = str.empty();
    
            //  
            str.push_back('a');
            str.append("ABC");
    
            //     
            str.insert(begin, len, 'a'); // str begin    len 'a'  
            str.insert(begin, "abc"); // begin    
            str.insert(begin, "abc", len); // begin    "abc" len   
            str.insert(begin, "abc", begin, len); // begin     "abc" begin  ,len 
    
            //      
            // iterator insert(const const_iterator _Where, _CRT_GUARDOVERFLOW const size_type _Count, const _Elem _Ch)
            str.insert(str.begin(), len, 'a');
            // iterator insert(const const_iterator _Where, const _Iter _First, const _Iter _Last)
            str.insert(str.begin(), str2.begin(), str2.end());
    
    
            //  
            str.erase(mid); //   mid  ,      
            str.erase(mid, len);  //   mid  ,  len 
            str.clear();
    
            str.assign("abc");  //   str,   "abc"
            str.assign("abcd", len); //   ,  len   
            str.assign("abccc", begin, len);    //   , begin  ,  len
    
            //  
            str.swap(str1); //   str1 str
            str.replace(begin, len, "abc"); //   begin  ,  len  
    
            //  
            //size_t find(const string & str, size_t pos = 0) const;
            //size_t find(const char* s, size_t pos, size_t n) const;
            //size_t find(const char* s, size_t pos = 0) const;
            //size_t find(char c, size_t pos = 0) const;
            // pos       n        n   
            pos = str.find('a'); //       ,    -1
            pos = str.find("abc");
            pos = str.find('a', begin); //  begin     
            pos = str.find("abc", begin, len); //  begin      "abc"  len  
    
            //     ,      
            pos = str.rfind('a');
            pos = str.rfind("abc");
            pos = str.rfind('a', begin); // begin  ,   
            pos = str.rfind("abc", begin, len);
    
            //size_t find_first_of(const string & str, size_t pos = 0) const;
            //size_t find_first_of(const char* s, size_t pos, size_t n) const;
            //size_t find_first_of(const char* s, size_t pos = 0) const;
            //size_t find_first_of(char c, size_t pos = 0) const;
            // pos       n        n   
            //                 
            str.find_first_of("abc");
            str.find_first_of("abc", begin);
            str.find_first_of("abc", begin, len);
    
            //size_t find_last_of(const string & str, size_t pos = npos) const noexcept;
            //size_t find_last_of(const char* s, size_t pos = npos) const;
            //size_t find_last_of(const char* s, size_t pos, size_t n) const;
            //size_t find_last_of(char c, size_t pos = npos) const noexcept;
    
            // string::size_type
            string::size_type pos = str.find(str2);
            // string::npos
            if (pos == string::npos) { }
    
    
            //   
            // string substr(size_t pos = 0, size_t len = npos) const;
            // pos             。              0,    0。
            // len        
            str2 = str.substr(begin);
            str2 = str.substr(begin, len);
    
            // algorithm
            reverse(str.begin(), str.end());    //   
    
            //      
            string strTrans = "A";
            transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::toupper);
            transform(strTrans.begin(), strTrans.end(), strTrans.begin(), ::tolower);
    
            //   
            // c_str()    const char*  ,           
            // const char* string::c_str() const
            const char* strChar = str.c_str();
    
            // const char* string::data() const
            // data(): c_str()  ,              
            strChar = str.data();
    
            // size_type copy(_Out_writes_(_Count) _Elem* const _Ptr, size_type _Count, const size_type _Off = 0) const
            char charAry[20] = { 0 };
            str.copy(charAry, len, begin); // begin  ,  len    
    
            // compare
            //     0,   ASCII        
            //int compare(const basic_string & s) const;
            //int compare(const Ch * p) const;
            //int compare(size_type pos, size_type n, const basic_string & s) const;
            //int compare(size_type pos, size_type n, const basic_string & s, size_type pos2, size_type n2) const;
            //int compare(size_type pos, size_type n, const Ch * p, size_type = npos) const;
            str.compare("abc");
    
            // to_string
            //            
            //std::string to_string(int value);
            //std::string to_string(long value);
            //std::string to_string(long long value);
            //std::string to_string(unsigned value);
            //std::string to_string(unsigned long value);
            //std::string to_string(unsigned long long value);
            //std::string to_string(float value);
            //std::string to_string(double value);
            //std::string to_string(long double value);
            str = to_string(1);
    
        }
    };