当前位置: 首页 > news >正文

山东省工程建设造价信息网站页面设计时最好只使用一种颜色避免视觉效果混响

山东省工程建设造价信息网站,页面设计时最好只使用一种颜色避免视觉效果混响,html5网站开发前景,工作组赴哈尔滨目录 一. 什么是STL 二. string类的概述 三. string类的常用接口说明 3.1 字符串对象创建相关接口#xff08;构造函数#xff09; 3.2 字符串长度和容量相关接口 3.3 字符访问相关接口函数 3.4 字符串删改相关接口函数 3.5 字符查找和子串相关接口函数 3.6 迭代器相…目录 一. 什么是STL 二. string类的概述 三. string类的常用接口说明 3.1 字符串对象创建相关接口构造函数 3.2 字符串长度和容量相关接口 3.3 字符访问相关接口函数 3.4 字符串删改相关接口函数 3.5 字符查找和子串相关接口函数 3.6 迭代器相关接口函数 3.7 常用的关于string类对象的全局函数 一. 什么是STL STL即标准库模板standard template library是C标准库的重要组成部位是一个包含了很多经常使用的数据结构和算法的软件框架。 C标准规定的STL有六大组件容器、迭代器、算法、仿函数、空间配置器和配接器其中容器就是我们常说的数据结构。 图1.1 STL六大组件二. string类的概述 string类是专为用于存储和操作字符串的类使用STL string容器的接口可以实现对字符串进行增删查改、计算长度、循环遍历等操作。string类是模板类basic_string以char为模板参数类型的一个实例其定义为typedef basic_stringchar string。 那么或许会有人问字符串的每个字符不都是char类型吗那么直接将basic_string的参数类型定义为char不就行了吗为什么还要定义模板再实例化 其实我们通常认为的char类型仅仅可以表示英文字母或字符每个char类型数据的值通过编码表通常为ASCII码表与特定字符对应由于英文字母仅有26个加上各种可打印字符不过128个char类型数据完全足够对英文进行编码。 但是其他语言就不一样了中文汉字有几万几十万char类型数据是无法表示的。因此为了对汉字进行编码就引入wchar_t型数据一个wchar_t型数据占2byte可以表示60000多个汉字基本可以涵盖所有常见汉字。 因此basic_string之所以不直接将成员变量类型设为char而是采用模板就是为了能够实例化出不同类型的模板参数以对应不同的编码规则从而使其适用于全世界的语言。 常见的编码规则 编码通过值与符号表建立映射关系从而使值可以转换为各种字符。 ASCII码 -- 适用于英文。unicode -- 全世界文字的通用编码表又称万国码。它为世界各国语言的每个字符设置了统一且唯一的二进制编码。unicode下面有包括utf-8、utf-16、utf-32这几种细化的编码规则他们分别表示以无符号的8、16、32个二进制位的数据进行编码。gkb -- 为中文量身定制的编码表。 在Windows下中文采用gkb编码规则长字节w_char类型数据可用于中文编码。 三. string类的常用接口说明 3.1 字符串对象创建相关接口构造函数 string() -- 创建空字符串对象仅包含字符串结束标识\0。string(const string s) -- 拷贝构造通过一个string类对象创建一个新的string类对象。注意string类的拷贝构造函数完成的是深拷贝他会为新创建的对象再开辟一块内存空间用于存储与s对象相同的字符即两者表示的字符串内容相同但并不是存储在同一块空间的字符串。string(const char* s) -- 通过一个现有的字符串构造string类对象。string(const string s, size_t pos, size_t len npos) -- 通过一个string类对象的子字符串构建新的对象子串的为从下标pos开始为第一个字符向后len个字符。缺省参数npos为string类的静态成员变量值为size_t类型的-1(一个极大的数)。如果pos往后的字符数不足len那么就用从pos往后的所有字符创建对象。string(const char* s, size_t n) -- 用字符串s的前n个字符构建字符串。 演示代码3.1 int main() {string s1; //空字符串构建string s2(abcdef); //通过字符串创建对象string s3(s2); //通过拷贝构造创建新对象string s4(s2, 1, 3); //通过已有类对象的子串创建新对象 -- bcdstring s5(abcdef, 3); //通过字符串的前n个字符创建新对象 -- abccout s1 s1 endl;cout s2 s2 endl;cout s3 s3 endl;cout s4 s4 endl;cout s5 s5 endl;return 0; } 图3.1 演示代码3.1的运行结果3.2 字符串长度和容量相关接口 size -- 获取字符串长度不包括末尾\0函数原型为size_t size() const。length -- 获取字符串长度不包括末尾\0函数原型为size_t length() const。 在string类中size和length没有任何区别。但是size可以用在树、链表等其他数据结构中计算数据量而length不行。为了保证STL中各种数据结构的接口名称统一一般建议使用size。 capacity -- 获取当前string类对象能够存储的有效字符量函数原型为size_t capacity() const。reserve -- 将字符串空间扩容到至少一定的值函数原型为void reserve(size_t n)。用reserve进行扩容并一定恰好扩容到n而是扩容到不小于n。同时reserve不影响字符串中原来的内容且不对扩大的那部分空间进行初始化如果n小于原来的capacity那么reverse函数不进行任何工作。resize -- 使字符串的长度(size\length)变到n函数原型为void resize(size_t n)、void resize(size_t n, char ch)这两个函数构成重载。resize函数的工作为将函数长度扩大到n在将扩大的部分的内容改为ch如果不给定ch值则默认为\0。如果n小于原来的长度size那么就截取前n个内容。clear -- 清空字符串的内容使字符串的长度(size\length)变为0。empty -- 判断字符串是否为空。 演示代码3.2 int main() {string s1(abc);cout size s1.size() endl;cout length s1.length() endl; //获取s1的长度cout capacity s1.capacity() endl; //获取s1的容量cout endl;s1.resize(10, x);cout s1 s1 endl; //abcxxxxxxxcout size s1.size() endl; //10cout endl;s1.reserve(20); //将s1的容量扩大到至少20cout capacity s1.capacity() endl; // 20cout size s1.size() endl; //3cout endl;cout s1.empty() endl; //非0s1.clear(); //清空数据cout s1.empty() endl; //0cout size s1.size() endl; //0cout capacity s1.capacity() endl; //31return 0; } 图3.2  演示代码3.2的运行结果3.3 字符访问相关接口函数 [] -- 下标引用操作符重载char operator[](size_t pos)、const char operator[](size_t pos) const两个函数构成重载分别用于访问普通类对象和const类对象。at -- 访问指定下标位置处的字符char at(size_t pos)、const char at(size_t pos) const。 重载[]和at都可以达到访问某个下标位置处字符的目的但是当出现越界访问时[]会assert断言出错at会抛异常且[]更符合一般的编码习惯这里推荐使用[]而不是ar。 演示代码3.3 int main() {string s1(abcdef);const string s2(abcdef);//使用[]将s1的每个值1for (size_t i 0; i s1.size(); i){s1[i] 1;}cout s1 endl; //bcdefg//[]访问const对象s2的每个字符只能读不能写for (size_t i 0; i s2.size(); i){//s2[i] 1; //报错cout s2[i];}cout endl;//通过at函数遍历打印s2的每个字符for (size_t i 0; i s2.size(); i){cout s2.at(i);}cout endl;return 0; } 图3.3 演示代码3.33.4 字符串删改相关接口函数 operator -- 尾插字符或字符串 string operator(const string s)  -- 通过类对象获取尾插字符串string operator(const char* s) -- 直接尾插字符串sstring operator(char c) -- 尾插字符c push_back -- 尾插字符。函数原型为void push_back(char c)append -- 尾插字符串或字符 string append(const string s) -- 通过string类对象获取字符串尾插string append(const char* s) -- 直接尾插字符串string append(const string s, size_t pos, size_t len npos) -- 通过获取子字符串尾插string append(const char* s, size_t n) -- 尾插字符串s的前n个字符 insert -- 在指定位置插入字符或字符串 string insert(size_t pos, const string s) -- 在pos下标处通过string类对象插入字符串string insert(size_t pos, const string s, size_t subpos, size_t len npos) -- 在pos位置处插入string对象的一个子字符串string insert(size_t pos, const char* s) -- 在pos下标处插入字符串sstring insert(size_t pos, const char* s, size_t n) -- 在pos下标处插入s的前n个字符string insert(size_t pos, size_t n, char c) -- 在pos位置处插入n个c字符 erase -- 从指定位置开始删除n个字符函数原型string erase(size_t pos 0, size_t len npos) 演示代码3.4 int main() {string s1;s1 aaa; //尾插字符串cout s1 endl;s1 b; //尾插单个字符cout s1 endl;s1.push_back(c); //push_back尾插单个字符cout s1 endl;s1.append(ddd); //append尾插字符串cout s1 endl;cout endl;string s2(aaaaaaa);s2.insert(2, bbbb); //在下标2的位置插入字符串bbbbcout s2 endl;s2.erase(2, 4); //从下标为2的位置开始删除4个字符cout s2 endl;return 0; } 图3.4 演示代码3.4的运行结果3.5 字符查找和子串相关接口函数 c_str -- 获取string类对象中的字符串成员字符串首字符地址。函数原型为const char* c_str() const。find -- 以指定下标位置pos为起点从前向后查找特定字符或子字符串找到了返回字符或子串第一次出现的下标找不到就返回npos。 size_t find(const string s, size_t pos 0) const -- 查找sting对象s的字符串。size_t find(const char* s, size_t pos 0) const -- 查找字符串s。size_t find(const char* s, size_t pos, size_t len) const -- 查找字符串s的一个子串。size_t find(char c, size_t pos 0) const -- 查找字符c。 refind -- 与find类似从尾部开始查找子字符串或字符第一次出现的下标位置。substr -- string substr(size_t pos 0, size_t len npos) -- 从当前string对象中获取子串构建一个新的string对象。 演示代码3.5 int main() {string s1(abcdefgh);cout s1.c_str() endl; //获取字符串成员cout s1.find(bcd) endl; //查找子串bcd -- 输出1cout s1.find(cdeg, 2, 3) endl; //从下标2处开始查找cdef前3个字符构成的子串cde -- 输出2cout s1.find(e) endl; //查找字符e -- 输出4cout endl;string s2(abcdefabcdef);cout s2.rfind(abc, 9) endl; //查找下标位置9之前pos最后一次出现的位置 -- 输出6cout s2.rfind(e) endl; //查找字符e最后一次出现的位置 -- 输出10string s3(abcdef);string s4 s3.substr(1, 4);cout s4 s4 endl; //bcdereturn 0; } 图3.5 演示代码3.5运行结果3.6 迭代器相关接口函数 迭代器的类型为iterator是char*的类型重定义名称其定义语句为typedef char* iterator -- 对于普通对象的迭代器typedef const char* const_iterator -- 对于const属性对象的迭代器。除了一般的iterator以外还有反向迭代器reverse_iterator和const_reverse_iterator。 对iterator类型的变量执行操作其指向的位置后移一位、对reverse_iterator类型的成员变量执行操作其指向的位置前移一位。 begin -- 获取指向字符串首元素的指针函数原型为iterator begin()和const_iterator begin() const这两个函数构成重载分别应用于普通对象和const属性对象。end -- 获取指向字符串最后一个元素后面那个位置(\0)的指针函数原型为iterator end()和const_iterator end() const。图3.6 begin和end函数返回值的指向位置示意图rbegin -- 返回指向字符串最后一个字符的指针函数原型为reverse_iterator rbegin() 和 const_reverse_iterator rbegin() const。rend -- 返回指向字符串第一个字符前一个位置的指针函数原型为reverse_iterator rend() 和 const_reverse_iterator rend() const。图3.7 rbegin和rend返回值指向的位置示意图演示代码3.6 int main() {string s1(abcde);//使用正向迭代器遍历s1的每个字符1后输出string::iterator it1 s1.begin();while (it1 ! s1.end()){(*it1);cout *it1; //输出bcdefit1;}cout endl;string s2(abcde);//使用反向迭代器反向遍历s2的每个字符并输出string::reverse_iterator it2 s2.rbegin();while (it2 ! s2.rend()){cout *it2; //输出edcbait2;}cout endl;return 0; } 图3.8  演示代码3,6的运行结果  3.7 常用的关于string类对象的全局函数 在C语言阶段学过函数atoi功能是将字符串转化为整数。但是C/C标准库函数中并没有atoi函数虽然大部分编译器都已支持atoi函数但是依然建议不要使用这样会降低程序的可移植性很多老式编译器依然不支持atoi。 stoi -- 将string类对象转换为int型数据。stol -- 将string类对象转换为long int型数据。stoul -- 将string类对象转换为unsigned long int型数据。stoll -- 将string类对象转换为long ong型数据。stoull -- 将string类对象转换为转换为unsigned long long型数据。stof -- 将string类对象转换为float型数据。stod -- 将string类对象转换为double型数据。 上述函数会自动排除字符串前部的空格会通过、-字符判断返回值的正负当遇到非数字字符时函数会终止执行返回当前值。 注意如果string无法转换为数字首个非空字符不是、-或数字字符以及超出数据类型表示范围的情况下上述函数均会抛异常引发程序崩溃。 演示代码3.7 int main() {string s1( -123ab1);string s2( 1234);string s3(1234abc);string s4(aa);string s5(-123.12);string s6(100.111abc);string s7(110.ab);string s8(001234.5);string s9(123456789987654321);cout s1 stoi(s1) endl; //-123cout s2 stoi(s2) endl; //1234cout s3 stoi(s3) endl; //1234//cout s4 stoi(s4) endl; //无法转换为int会抛异常cout s5 stod(s5) endl; //-123.12cout s6 stod(s6) endl; //110.111cout s7 stod(s7) endl; //110cout s8 stod(s8) endl; //1234.5//cout s9 stoi(s9) endl; //超出int范围会抛异常return 0; }
http://www.dnsts.com.cn/news/43658.html

相关文章:

  • 开80服务器怎么做网站电子商务网站建设与实践上机指导教程
  • 苏州建网站哪个好找券网站怎么做
  • 奢侈品的网站设计安卓 网站整站下载
  • 镇江网站搜索优化wordpress目录链接外链
  • 织梦仿asp网站网站热力图怎么做
  • 大田县建设局官方网站网站建设基本内容
  • 学校官网网页设计谷歌seo怎么做的
  • 办网站需要多少费用手机ftp传网站文件在哪里
  • 前端怎么做自己的博客网站seo网络优化是什么工作
  • 网站建设的目标与思路专业网站制作仪表多少钱
  • 如何建设网站站点做二手货车网站公司
  • h5是什么网站上面做的网站建设合同表(书)
  • 青岛网站开发培训价格温州vi设计公司
  • 兰州网站在哪备案e4a能建设网站吗
  • 诚一网站推广wordpress管理密码修改
  • 酒店网站html网站建设的安全性问题
  • 做网站后端用户用什么写汉语资源建设相关网站
  • wordpress 站点群android studio下载官网
  • 网站如何做攻击防护网站icp备案网址
  • 网站开发前端框架和后端框架廊坊建站软件
  • 四川省工程建设信息网站网站的关键词和描述
  • 网站程序语言江门 网站设计
  • 地方门户网站赚钱一个新的网站怎么做优化
  • 扬中网站建设丰台做网站的公司
  • 网站登录入口网页广药网站建设试题
  • 上海网站搜索引擎优化网站设计软件开发
  • 网站pv多少可以接外包的平台
  • 企业网站排名怎么做平面设计课程标准
  • 长春城乡建设部网站首页四川旅游攻略自由行攻略
  • 宝安中心做网站多少钱页面设计包括插画吗