zoukankan      html  css  js  c++  java
  • std::string 简单入门

    1. string的定义原型
      复制代码
      typedef basic_string<char, char_traits<char>, allocator<char> >
          string; 
      typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
          wstring;
      
      // 第二三个参数有默认值
      复制代码

    2. string部分构造方式
      复制代码
      // string 部分构造方式
      #include <iostream>
      #include <string>
      using namespace std;
      
      int main(void)
      {
          string s1;
          string s2("ABCDEFG");
          cout << s1 << endl;
          cout << s2 << endl;
      
          // 使用最初的形式定义
          basic_string<char> s3("xxxx");
          cout << s3 << endl;
      
          /*
              basic_string(
                  const value_type *_Ptr, 
                  size_type _Count
              );
          */
          string s4("DEFG", 2);
          cout << s4 << endl; // DE
          /*
              basic_string(
                  const basic_string& _Right, 
                  size_type _Roff,
                  size_type _Count = npos
              );
          */
          string s5(s2, 2, 2);
          cout << s5 << endl; //CD
      
          /*
          basic_string(
             const_iterator _First,
             const_iterator _Last
          );
          */
          string::const_iterator first = s2.begin() + 1;
          string::const_iterator end = s2.begin() + 3; // [first, end)
          string s6(first, end);
          cout << s6 << endl; // BC
      
          return 0;
      }
      复制代码

    3. string常用成员函数
      复制代码
      // string 部分成员函数部分形式操作
      #include <iostream>
      #include <string>
      using namespace std;
      
      
      int main(void)
      {
          string s1("ABCDEC");
          cout << s1.size() << endl;
          cout << s1.length() << endl;
      
          cout << s1.empty() << endl;
          // 一样第二个参数是count,不是截至位置
          string s2 = s1.substr(1, /*4*/string::npos); // string::npos == 4294967295
          cout << s2 << endl;
      
          //find
          /*
              size_type find(
                  value_type _Ch, 
                  size_type _Off = 0
              ) const;
          */
          // 查找某个字符在string中第一次出现的位置(下标),没找到返回 4294967295 最大值
          cout << s1.find('C') << endl; // 2
          //size_type -> size_t ->unsigned int
          /*
              size_type find(
                  const value_type* _Ptr,
                  size_type _Off = 0
              ) const;
          */
          // 在string中查找字符串,找到返回第一次出现位置的下标,没找到返回 string::npos, 4294967295 最大值
          cout << s1.find("CD") << endl; // 2
          /*
          size_type find(
              const basic_string<CharType, Traits, Allocator>& _Str,
              size_type _Off = 0
              ) const;
          */
          // 在string中查找string
          cout << s1.find(s2) << endl;
      
          //rfind,反向查找,返回第一次查找到的下标
          cout << s1.rfind('C') << endl; // 5
      
          //replace
          /*
              basic_string<CharType, Traits, Allocator>& replace(
                 size_type _Pos1, 
                 size_type _Num1,
                 const value_type* _Ptr
              );
          */
          // 第三个参数也能是string,这里不写了,只介绍这一个好了
          string s3 = s1;
          s3.replace(1, 2, "RRR");
          cout << s3 << endl; // ARRRDEC
      
          // compare 
          cout << s3.compare(s1) << endl; // 1, s3 > s1
      
          // insert
          /*
              basic_string<CharType, Traits, Allocator>& insert(
                 size_type _P0, 
                 const value_type* _Ptr
              );
          */
          s3.insert(2, "aaaaaaaaaaa");
          cout << s3 << endl; // ARaaaaaaaaaaaRRDEC
      
          // append
          /*
              basic_string<CharType, Traits, Allocator>& append(
                  const value_type* _Ptr
              );
          */
          s3.append("OOOOOOOOOOOOOOOOO");
          cout << s3 << endl; // ARaaaaaaaaaaaRRDECOOOOOOOOOOOOOOOOO
      
          // swap
          /*
              void swap(
                  basic_string<CharType, Traits, Allocator>& _Str
              );
          */
          s3.swap(s2);
          cout << s3 << endl;
          cout << s2 << endl;
      
          return 0;
      }
      复制代码

    4. string综合应用
        在字符集中查找存在的首尾字符,并截取。
      复制代码
      #include <iostream>
      #include <string>
      using namespace std;
      
      int main()
      {
          string strinfo = " //*---------Hello World!--------------*//";
          string strset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
          /*
              size_type find_first_of(
                  const basic_string<CharType, Traits, Allocator>& _Str,
                  size_type _Off = 0
              ) const;
          */
          string::size_type first = strinfo.find_first_of(strset);
          if (first == string::npos)
              cout << "not found." << endl;
          string::size_type end = strinfo.find_last_of(strset);
          if (end == string::npos)
              cout << "not found." << endl;
          //cout << "string::npos" << string::npos << endl; // string::npos == 4294967295
          cout << strinfo.substr(first, end - first + 1) << endl;
      
          return 0;
      }
      复制代码

    5. string简单去除字符串左右空格
      复制代码
      // string 简单实现去除字符串左右空格
      #include <iostream>
      #include <string>
      using namespace std;
      
      class StringUtils {
      public:
          static void LTrim(string &s)
          {
              string drop = " 	";
              s.erase(0, s.find_first_not_of(drop));
          }
      
          static void RTrim(string &s)
          {
              string drop = " 	";
              s.erase(s.find_last_not_of(drop)+1);
          }
      
          static void Trim(string &s)
          {
              LTrim(s);
              RTrim(s);
          }
      };
      
      int main(void)
      {
          string s1 = "               ABCD                ";
          StringUtils::Trim(s1);
          cout << s1 << endl; // "ABCD"
          cout << s1.size() << endl; // 4
      
          return 0;
      }
      复制代码

    http://www.cnblogs.com/ifpelset/articles/4523925.html

  • 相关阅读:
    模板代码生成器 Template Code Creater
    Oracle编程入门经典 第2章 SQLPlus和基本查询
    Oracle编程入门经典 第5章 体系结构
    数据仓库
    C++ WINDOWS API 第1章 Windows 应用程序开发入门
    C++ WINDOWS API 第2章 Windows API概要
    Oracle编程入门经典 第7章 表
    单交换机VLAN虚拟局域网划分
    Oracle日志文件被误删除
    Oracle编程入门经典 第4章 新9i示例模式
  • 原文地址:https://www.cnblogs.com/findumars/p/7968380.html
Copyright © 2011-2022 走看看