<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              频道栏目
              首页 > 程序开发 > 软件开发 > C++ > 正文
              C++基本语言-字符串string¡¢向量vector和数组实例介绍
              2018-07-28 16:17:40         来源£ºweixu1999的博客  
              收藏   我要投稿

              第二章介绍内置类型£¬本章介绍抽象数据类型库¡£ 

              - 其中string和vector是两种最重要的标准库类型£¬前者支持可变长字符串£¬后者表示可变长的集合¡£ 

              - 还有一种标准库类型是迭代器£¬它是string和vector的配套类型£¬常被用于访问string中的字符和vector中的元素¡£

              第三章 字符串¡¢向量和数组

              头文件不应包含using声明¡£

              标准库类型string

              #include <string>

              using std::string

              初始化string

              直接初始化£¨direct initialization£©

              拷贝初始化£¨copy initialization£©£º使用等号 

              string s1;

              string s2(s1);

              string s2 = s2;

              string s3("hiya");

              string s3 = "hiya";

              string s4(10, 'c'); //s4的内容是cccccccccc

              string对象上的操作

              1. cout << s

              2. cin >> s         //将string对象读入s£¬遇到空白停止

              3. getline(is, s)   //从输入流is中读取一行赋给s£¨换行符被读取了£¬但被丢弃而没有赋给s£©£¬返回is

              4. s.empty()        //s为空返回true£¬否则返回false

              5. s.size()

              6. s[n]             //返回s中第n个字符的引用£¬位置n从0计起          

              7. s1 + s2          //返回s1和s2连接后的结果

              8. s1 = s2

              9. s1 == s2

              10. s1 != s2

              11. <, <=, >, >=

              逻辑非运算符£¨£¡£©

              string::size_type类型£ºs.size()的返回值类型£¬是string类的配套类型¡£它是一个无符号类型的值£¬能够存放下任何string对象的大小¡£

              处理string对象中的字符

              cctype头文件£º对单个字符的判断或处理的函数

              isupper(c)      //c是大写字母时为真

              islower(c)

              tolower(c)      //如果c是大写字母£¬则输出对于的小写字母£»否则原样输出

              toupper(c)

              isalpha(c)      //c是字母时为真

              isdigit(c)      //c是数字时为真

              isalnum(c)      //c是字母或数字时为真

              ispunct(c)      //c是标点符号时为真

              isspace(c)      //c是空?#36164;?#20026;真£¨即c是空格¡¢横向制表符¡¢纵向制表符¡¢回车符¡¢换行符¡¢进纸符的一种£©

              iscntrl(c)      //c是控制字符时为真

              isgraph(c)      //c不是空格但可打印时为真

              isprint(c)      //c是可打印字符时为真£¨即c是空格或具有可?#26377;问„¦?/p>

              isxdigit(c)     //十六进制数

              使用C++版本的C标准库头文件£¬形如name.h£¬C++++中这些文件命名为cname£¬内容一样£¬且头文件cname中定义的名字从属于命名空间std¡£

              范围for£¨range for£©语句

              for (declaration : expression)

                  statement

              例如£º

              string str("some string");

              //每行输出str中的一个字符

              for(auto c : str)

                  cout << c <<endl;

              标准库类型vector

              vector是一个类模板£¨class template£©¡£vector表示对象的集合£¬其中所有对象的类型都相同¡£集合中的每个对象都有一个与之对应的索引£¬索引用于访问对象¡£vector也常被称为容器£¨container£©.

              定义和初始化vector对象

              vector<T> v1

              vector<T> v2(v1)

              vector<T> v2 = v1

              vector<T> v3(n, val)

              vector<T> v4(n)

              vector<T> v5{a,b,c...}

              vector<T> v5 = {a,b,c...}

              列表初始化vector对象

              vector<string> articles = {"a", "an", "the"};

              1

              向vector对象中添加元素

              push_back£º把一个值当成vector对象的尾元素“压到£¨push£©”vector对象的“尾端£¨back£©”¡£ 

              vector<int> v2;

              for(int i=0; i != 100; ++1)

                  v2.push_back(i);

              运行时才知道vector对象中?#38750;?#30340;个数£º

              string word;

              vector<string> text;

              while (cin >> word) {

                  text.push_back(word);

              }

              vector对象能高效增长£ºvector能在运行时高效快速地添加元素¡£

              如果循环体内包含有向vector对象添加元素的语句£¬则不能使用++范围for++循环¡£

              其他vector操作

              v.empty()

              v.size()

              v.push_back(t)

              v[n]        //返回v中第n个位置上元素的引用

              v1 = v2

              v1 = {a,b,c...}

              v1 == v2

              v1 != v2

              <, <=, >, >=

              迭代器iterator

              一种通用机制£º实现使用下标运算符访问string对象的字符或vector对象的元素¡£

              类似指针类型£¬提供了对对象的间接访问¡£

              begin和end成员

              //由编译器决定b¡¢e的类型

              //b表示v的第一个元素£¬e表示v尾元素的下一个元素

              auto b = v.begin(), e = v.end();    //b¡¢e类型相同

              end成员返回的迭代器常被称作尾后迭代器£¨off-the-end iterator£©£¬或者简称尾迭代器¡£

              如果容器为空£¬则begin和end返回的都是尾后迭代器¡£

              标准容器迭代器运算符

              *iter           返回迭代器iter所指元素的引用

              iter->men       解引用iter并获取钙元素的名为mem的成员£¬等价于£¨*iter£©.mem

              ++iter

              --iter

              iter1 == iter2

              iter1 != iter2

              //将字符串首字母改成大写

              string s("some string");

              if (s.begin() != s.end()) {

                  auto it = s.begin();

                  *it = toupper(*it);

              }

              //将迭代器从一个元素移动到另一个元素£¬把字符串中第一个单词改为大写

              //注意£¬使用的是!=£¬而不是<

              for(auto it = s.begin(); it != s.end() && !isspace(*it); ++it)

                  *it = toupper(*it);

              #### 迭代器类型

              拥有迭代器的标准库使用iterator和const_iterator来表示迭代器的类型£º

              vector<int>::iterator it;           //it能读写vector<int>中的元素

              string::iterator it2;               //it2能读写string对象中的字符

              vector<int>::const_iterator it3;    //it3只能读元素£¬不能写元素

              string::const_iterator it4;         //it4只能读字符£¬不能写字符

              点击复制链接 与好友分享!回本站首页
              上一篇£º用C语言¡¢C++编写一个迷宫游戏£¨代码实例£©
              下一篇£º关于C++中new¡¢operator new和placement new的区别详解
              相关文章
              图文推荐
              点击排行

              关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

              版权所有: 红黑联盟--致力于做实用的IT技术学习网站

              ¼«ËÙ·ÉͧºÃ¼Ù
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>