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

网站图片分辨率尺寸江苏华江建设集团有限公司网站

网站图片分辨率尺寸,江苏华江建设集团有限公司网站,wordpress建立的网站,做公司网站找谁文章目录 前言一、 为什么学习string类二、标准库中的string类 前言 #x1f467;个人主页#xff1a;小沈YO. #x1f61a;小编介绍#xff1a;欢迎来到我的乱七八糟小星球#x1f31d; #x1f4cb;专栏#xff1a;C 心愿便利店 #x1f511;本章内容#xff1a;str… 文章目录 前言一、 为什么学习string类二、标准库中的string类 前言 个人主页小沈YO. 小编介绍欢迎来到我的乱七八糟小星球 专栏C 心愿便利店 本章内容string 记得 评论 点赞 收藏 关注哦~ 提示以下是本篇文章正文内容下面案例可供参考 一、 为什么学习string类 C语言中字符串是以’\0’结尾的一些字符的集合为了操作方便C标准库中提供了一些str系列的库函数但是这些库函数与字符串是分离开的不太符合OOP的思想而且底层空间需要用户自己管理稍不留神可能还会越界访问 开始学习string就需要开始学习读文档具体可以通过cplusplus.con网站去搜索 二、标准库中的string类 string #mermaid-svg-1cCEYpsuPjWTcFGI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .error-icon{fill:#552222;}#mermaid-svg-1cCEYpsuPjWTcFGI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1cCEYpsuPjWTcFGI .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-1cCEYpsuPjWTcFGI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1cCEYpsuPjWTcFGI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1cCEYpsuPjWTcFGI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1cCEYpsuPjWTcFGI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1cCEYpsuPjWTcFGI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1cCEYpsuPjWTcFGI .marker.cross{stroke:#333333;}#mermaid-svg-1cCEYpsuPjWTcFGI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1cCEYpsuPjWTcFGI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .cluster-label text{fill:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .cluster-label span{color:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .label text,#mermaid-svg-1cCEYpsuPjWTcFGI span{fill:#333;color:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .node rect,#mermaid-svg-1cCEYpsuPjWTcFGI .node circle,#mermaid-svg-1cCEYpsuPjWTcFGI .node ellipse,#mermaid-svg-1cCEYpsuPjWTcFGI .node polygon,#mermaid-svg-1cCEYpsuPjWTcFGI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1cCEYpsuPjWTcFGI .node .label{text-align:center;}#mermaid-svg-1cCEYpsuPjWTcFGI .node.clickable{cursor:pointer;}#mermaid-svg-1cCEYpsuPjWTcFGI .arrowheadPath{fill:#333333;}#mermaid-svg-1cCEYpsuPjWTcFGI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1cCEYpsuPjWTcFGI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1cCEYpsuPjWTcFGI .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-1cCEYpsuPjWTcFGI .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-1cCEYpsuPjWTcFGI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1cCEYpsuPjWTcFGI .cluster text{fill:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI .cluster span{color:#333;}#mermaid-svg-1cCEYpsuPjWTcFGI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1cCEYpsuPjWTcFGI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1 . string类的了解: 字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持其接口类似于标准字符容器的接口但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型使用它的默认char_traits和分配器类型(关于模板的更多信息请参阅basic_string)。string类是basic_string模板类的一个实例它使用char来实例化basic_string模板类并用char_traits和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。注意这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列这个类的所有成员(如长度或大小)以及它的迭代器将仍然按照字节(而不是实际编码的字符)来操作。 总结 string是表示字符串的字符串类该类的接口与常规容器的接口基本相同再添加了一些专门用来操作string的常规操作string在底层实际是basic_string模板类的别名typedef basic_stringchar, char_traits, allocator string;不能操作多字节或者变长字符的序列 在使用string类时必须包含#include头文件以及using namespace std; #mermaid-svg-TJD06SaSZ1VPaPdK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .error-icon{fill:#552222;}#mermaid-svg-TJD06SaSZ1VPaPdK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-TJD06SaSZ1VPaPdK .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-TJD06SaSZ1VPaPdK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-TJD06SaSZ1VPaPdK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-TJD06SaSZ1VPaPdK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-TJD06SaSZ1VPaPdK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-TJD06SaSZ1VPaPdK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-TJD06SaSZ1VPaPdK .marker.cross{stroke:#333333;}#mermaid-svg-TJD06SaSZ1VPaPdK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-TJD06SaSZ1VPaPdK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .cluster-label text{fill:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .cluster-label span{color:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .label text,#mermaid-svg-TJD06SaSZ1VPaPdK span{fill:#333;color:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .node rect,#mermaid-svg-TJD06SaSZ1VPaPdK .node circle,#mermaid-svg-TJD06SaSZ1VPaPdK .node ellipse,#mermaid-svg-TJD06SaSZ1VPaPdK .node polygon,#mermaid-svg-TJD06SaSZ1VPaPdK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-TJD06SaSZ1VPaPdK .node .label{text-align:center;}#mermaid-svg-TJD06SaSZ1VPaPdK .node.clickable{cursor:pointer;}#mermaid-svg-TJD06SaSZ1VPaPdK .arrowheadPath{fill:#333333;}#mermaid-svg-TJD06SaSZ1VPaPdK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-TJD06SaSZ1VPaPdK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-TJD06SaSZ1VPaPdK .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-TJD06SaSZ1VPaPdK .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-TJD06SaSZ1VPaPdK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-TJD06SaSZ1VPaPdK .cluster text{fill:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK .cluster span{color:#333;}#mermaid-svg-TJD06SaSZ1VPaPdK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-TJD06SaSZ1VPaPdK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2 . string类的常用接口说明: #mermaid-svg-p8w3IZWMjF1Ziyrg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .error-icon{fill:#552222;}#mermaid-svg-p8w3IZWMjF1Ziyrg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-p8w3IZWMjF1Ziyrg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .marker.cross{stroke:#333333;}#mermaid-svg-p8w3IZWMjF1Ziyrg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .cluster-label text{fill:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .cluster-label span{color:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .label text,#mermaid-svg-p8w3IZWMjF1Ziyrg span{fill:#333;color:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .node rect,#mermaid-svg-p8w3IZWMjF1Ziyrg .node circle,#mermaid-svg-p8w3IZWMjF1Ziyrg .node ellipse,#mermaid-svg-p8w3IZWMjF1Ziyrg .node polygon,#mermaid-svg-p8w3IZWMjF1Ziyrg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .node .label{text-align:center;}#mermaid-svg-p8w3IZWMjF1Ziyrg .node.clickable{cursor:pointer;}#mermaid-svg-p8w3IZWMjF1Ziyrg .arrowheadPath{fill:#333333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-p8w3IZWMjF1Ziyrg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-p8w3IZWMjF1Ziyrg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-p8w3IZWMjF1Ziyrg .cluster text{fill:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg .cluster span{color:#333;}#mermaid-svg-p8w3IZWMjF1Ziyrg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-p8w3IZWMjF1Ziyrg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 1 .string类对象的常见构造 (constructor)函数名称功能说明string() 重点构造空的string类对象即空字符串string(const char* s) 重点用C-string来构造string类对象string(size_t n, char c)string类对象中包含n个字符cstring(const strings) 重点拷贝构造函数 string() 重点 - - - 构造空的string类对象即空字符串 void test_string1() {string s1;couts1endl; } int main() {test_string1();return 0; }string(const char* s) 重点- - - 用C-string来构造string类对象 void test_string1() {string s2(hello);cout s2 endl; } int main() {test_string1();return 0; }string(size_t n, char c) string类对象中包含n个字符c int main() {string s1(3, a);cout s1 endl;return 0; }string(const strings) 重点 拷贝构造函数 int main() {string s1(hello);string s2(s1);cout s1 endl;cout s2 endl;return 0; }#mermaid-svg-bAzQF44RjJYesmDM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bAzQF44RjJYesmDM .error-icon{fill:#552222;}#mermaid-svg-bAzQF44RjJYesmDM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bAzQF44RjJYesmDM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bAzQF44RjJYesmDM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bAzQF44RjJYesmDM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bAzQF44RjJYesmDM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bAzQF44RjJYesmDM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bAzQF44RjJYesmDM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bAzQF44RjJYesmDM .marker.cross{stroke:#333333;}#mermaid-svg-bAzQF44RjJYesmDM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bAzQF44RjJYesmDM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bAzQF44RjJYesmDM .cluster-label text{fill:#333;}#mermaid-svg-bAzQF44RjJYesmDM .cluster-label span{color:#333;}#mermaid-svg-bAzQF44RjJYesmDM .label text,#mermaid-svg-bAzQF44RjJYesmDM span{fill:#333;color:#333;}#mermaid-svg-bAzQF44RjJYesmDM .node rect,#mermaid-svg-bAzQF44RjJYesmDM .node circle,#mermaid-svg-bAzQF44RjJYesmDM .node ellipse,#mermaid-svg-bAzQF44RjJYesmDM .node polygon,#mermaid-svg-bAzQF44RjJYesmDM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bAzQF44RjJYesmDM .node .label{text-align:center;}#mermaid-svg-bAzQF44RjJYesmDM .node.clickable{cursor:pointer;}#mermaid-svg-bAzQF44RjJYesmDM .arrowheadPath{fill:#333333;}#mermaid-svg-bAzQF44RjJYesmDM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bAzQF44RjJYesmDM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bAzQF44RjJYesmDM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bAzQF44RjJYesmDM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bAzQF44RjJYesmDM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bAzQF44RjJYesmDM .cluster text{fill:#333;}#mermaid-svg-bAzQF44RjJYesmDM .cluster span{color:#333;}#mermaid-svg-bAzQF44RjJYesmDM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bAzQF44RjJYesmDM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2 . string类对象的容量操作 函数名称功能说明size重点返回字符串有效字符长度length返回字符串有效字符长度capacity返回空间总大小empty 重点检测字符串释放为空串是返回true否则返回falseclear 重点清空有效字符reserve 重点为字符串预留空间确定大概知道要多少空间提前开好减少扩容提高效率resize 重点将有效字符的个数改成n个多出的空间用字符c填充shrink_to_fit将capacity容量缩至合适 size重点- - - 返回字符串有效字符长度 int main() {string s1(hello);string s2(aaaaaaaaaaaa);cout s1.size() endl;cout s2.size() endl;return 0; }length - - - 返回字符串有效字符长度 int main() {string s1(hello);string s2(aaaaaaaaaaaa);cout s1.length() endl;cout s2.length() endl;return 0; }capacity - - - 返回空间总大小 int main() {string s1(hello);string s2(aaaaaaaaaaaa);cout s1.capacity () endl;cout s2.capacity () endl;return 0; }同一个string对象在不同平台下的capacity()空间容量可能不同因为string在底层就是一个存储字符的动态顺序表空间不够了要进行扩容而不同平台底层的扩容机制有所不同导致了最终capacity()的结果不同。例如下述展现的扩容机制 VS下的扩容机制 第一次扩容是2倍后面都是以1.5倍的大小去扩容。 void test_string1() {string s;size_t old s.capacity();cout 初始 s.capacity() endl;for (size_t i 0; i 100; i){s.push_back(a);if (s.capacity() ! old){cout 扩容: s.capacity() endl;old s.capacity();}}cout s.capacity() endl; }Linux下的扩容机制 一次按照2倍的大小进行扩容 void test_string1() {string s;size_t old s.capacity();cout 初始 s.capacity() endl;for (size_t i 0; i 100; i){s.push_back(a);if (s.capacity() ! old){cout 扩容: s.capacity() endl;old s.capacity();}}cout s.capacity() endl; }empty 重点- - - 检测字符串释放为空串是返回true否则返回false int main() {string s1;if (s1.empty()){cout s1是一个空字符串 endl;}return 0; }clear 重点- - - 清空有效字符 void test_string8() {string s1(hello world);cout s1.size() endl;//11cout s1.capacity() endl;//15s1.clear();cout s1.size() endl;//0cout s1.capacity() endl;//15 }reserve 重点- - - 为字符串预留空间确定大概知道要多少空间提前开好减少扩容提高效率 void test_string1() {string s;s.reserve(100);size_t old s.capacity();cout 初始 s.capacity() endl;for (size_t i 0; i 100; i){s.push_back(a);if (s.capacity() ! old){cout 扩容: s.capacity() endl;old s.capacity();}}s.reserve(10);cout s.capacity() endl; }如上当不写s.reserve(100);就会发生扩容但是当写上s.reserve(100);提前开好空间就不会发生扩容同时要注意s.reserve(10);并不会缩减空间缩容 resize 重点- - - 将有效字符的个数改成n个多出的空间用字符c填充 void test_string2() {string s1(hello world);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;//s1.resize(13, x);s1.resize(20, x);//这里有效字符个数改成20s1本来的有效字符hello world是11个超出部分用x补充其次size()和capacity也会随之发生改变---size()变成20capacity()变成31s1.resize(5);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;string s2;s2.resize(10, #);cout s2 endl;cout s2.size() endl;cout s2.capacity() endl; }shrink_to_fit() - - - 将capacity容量缩至合适 void test_string1() {string s;s.reserve(50);s hello world;cout s.size() endl;cout s.capacity() endl;s.shrink_to_fit();cout s.size() endl;cout s.capacity() endl; }注意 size()与length()方法底层实现原理完全相同引入size()的原因是为了与其他容器的接口保持一致一般情况下基本都是用size()。clear()只是将string中有效字符清空不改变底层空间大小。resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个不同的是当字符个数增多时resize(n)用0来填充多出的元素空间resize(size_t n, char c)用字符c来填充多出的元素空间。注意resize在改变元素个数时如果是将元素个数增多可能会改变底层容量的大小如果是将元素个数减少底层空间总大小不变。reserve(size_t res_arg0)为string预留空间不改变有效元素个数当reserve的参数小于string的底层空间总大小时reserver不会改变容量大小。 #mermaid-svg-x7bFykrHBiQvcWjh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .error-icon{fill:#552222;}#mermaid-svg-x7bFykrHBiQvcWjh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-x7bFykrHBiQvcWjh .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-x7bFykrHBiQvcWjh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-x7bFykrHBiQvcWjh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-x7bFykrHBiQvcWjh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-x7bFykrHBiQvcWjh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-x7bFykrHBiQvcWjh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-x7bFykrHBiQvcWjh .marker.cross{stroke:#333333;}#mermaid-svg-x7bFykrHBiQvcWjh svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-x7bFykrHBiQvcWjh .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .cluster-label text{fill:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .cluster-label span{color:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .label text,#mermaid-svg-x7bFykrHBiQvcWjh span{fill:#333;color:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .node rect,#mermaid-svg-x7bFykrHBiQvcWjh .node circle,#mermaid-svg-x7bFykrHBiQvcWjh .node ellipse,#mermaid-svg-x7bFykrHBiQvcWjh .node polygon,#mermaid-svg-x7bFykrHBiQvcWjh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-x7bFykrHBiQvcWjh .node .label{text-align:center;}#mermaid-svg-x7bFykrHBiQvcWjh .node.clickable{cursor:pointer;}#mermaid-svg-x7bFykrHBiQvcWjh .arrowheadPath{fill:#333333;}#mermaid-svg-x7bFykrHBiQvcWjh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-x7bFykrHBiQvcWjh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-x7bFykrHBiQvcWjh .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-x7bFykrHBiQvcWjh .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-x7bFykrHBiQvcWjh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-x7bFykrHBiQvcWjh .cluster text{fill:#333;}#mermaid-svg-x7bFykrHBiQvcWjh .cluster span{color:#333;}#mermaid-svg-x7bFykrHBiQvcWjh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-x7bFykrHBiQvcWjh :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 3 . string类对象的访问及遍历操作 函数名称功能说明operator[] 重点返回pos位置的字符const string类对象调用begin endbegin获取一个字符的迭代器 end获取最后一个字符下一个位置的迭代器rbegin rendbegin获取一个字符的迭代器 end获取最后一个字符下一个位置的迭代器范围forC11支持更简洁的范围for的新遍历方式 operator[] 重点 返回pos位置的字符const string类对象调用 void test_string2() {string s1(hello world\n);string s2 hello world;//单参数构造支持隐式类型转换//遍历stringfor (size_t i 0; i s1.size(); i){//读cout s1[i] ;}cout endl;for (size_t i 0; i s1.size(); i){//写s1[i];}cout s1 endl;; }begin end - - - begin获取一个字符的迭代器 end获取最后一个字符下一个位置的迭代器 void test_string3() {string s4hello world;string::iterator it s4.begin();while (it ! s4.end()){//读cout *it ;it;}cout endl;it s4.begin();//while (it s4.end())可以这样写但是不建议while (it ! s4.end()){//写*ita;cout *it ;it;}cout endl; }rbegin rend - - - begin获取一个字符的迭代器 end获取最后一个字符下一个位置的迭代器 void test_string4() {string s5 hello world;string::reverse_iterator rit s5.rbegin();while (rit ! s5.rend()){cout *rit ;rit;}cout endl; }范围for - - - C11支持更简洁的范围for的新遍历方式 void test_string5() {string s6 hello world;//原理编译器替换成迭代器for (auto ch : s6){//读cout ch ;}cout endl;//对于写---范围for 本质自动遍历是*it赋值给ch,ch是*it的拷贝所以要写的话要加这样ch就是*it的别名for (auto ch : s6)//错误写法for (auto ch : s6){//写ch;}cout s6 ;cout endl;}void func(const string s)//不推荐传值传参会进行拷贝调用拷贝构造string的底层不能用浅拷贝所以用引用constvoid func(const string s) {//迭代器支持读写但是这里是const不支持迭代器写所以C设计出了cbegin() cend() crbegin() crend()也可以const例如下面一行注释代码//string::const_iterator it s.begin();//对比于上面代码const和不const还用修改可以直接使用auto直接推出类型auto it s.begin();while (it ! s.end()){//读cout *it ;it;}cout endl;//string::const_reverse_iterator rit s.rbegin();auto rit s.rbegin();while (rit ! s.rend()){cout *rit ;rit;}cout endl; } void test_string6() {string s7 hello world;func(s7); }#mermaid-svg-pqbleo4tVX0DL5Ab {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .error-icon{fill:#552222;}#mermaid-svg-pqbleo4tVX0DL5Ab .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pqbleo4tVX0DL5Ab .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-pqbleo4tVX0DL5Ab .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pqbleo4tVX0DL5Ab .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pqbleo4tVX0DL5Ab .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pqbleo4tVX0DL5Ab .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pqbleo4tVX0DL5Ab .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pqbleo4tVX0DL5Ab .marker.cross{stroke:#333333;}#mermaid-svg-pqbleo4tVX0DL5Ab svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pqbleo4tVX0DL5Ab .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .cluster-label text{fill:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .cluster-label span{color:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .label text,#mermaid-svg-pqbleo4tVX0DL5Ab span{fill:#333;color:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .node rect,#mermaid-svg-pqbleo4tVX0DL5Ab .node circle,#mermaid-svg-pqbleo4tVX0DL5Ab .node ellipse,#mermaid-svg-pqbleo4tVX0DL5Ab .node polygon,#mermaid-svg-pqbleo4tVX0DL5Ab .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pqbleo4tVX0DL5Ab .node .label{text-align:center;}#mermaid-svg-pqbleo4tVX0DL5Ab .node.clickable{cursor:pointer;}#mermaid-svg-pqbleo4tVX0DL5Ab .arrowheadPath{fill:#333333;}#mermaid-svg-pqbleo4tVX0DL5Ab .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pqbleo4tVX0DL5Ab .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pqbleo4tVX0DL5Ab .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-pqbleo4tVX0DL5Ab .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-pqbleo4tVX0DL5Ab .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pqbleo4tVX0DL5Ab .cluster text{fill:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab .cluster span{color:#333;}#mermaid-svg-pqbleo4tVX0DL5Ab div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pqbleo4tVX0DL5Ab :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 4 . string类对象的修改操作 函数名称功能说明push_back在字符串后尾插字符cappend在字符串后追加一个字符串operator (重点)在字符串后追加字符串strc_str(重点)返回C格式字符串find npos(重点)从字符串pos位置开始往后找字符c返回该字符在字符串中的位置rfind从字符串pos位置开始往前找字符c返回该字符在字符串中的位置substr在str中从pos位置开始截取n个字符然后将其返回 push_back - - - 在字符串后尾插字符c void test_string3() {string s;string ss(hello);s.push_back(#);cout s endl; }append - - - 在字符串后追加一个字符串 void test_string3() {string s;string ss(hello);s.append(hello world);s.append(ss);cout s endl; }operator (重点) - - - 在字符串后追加字符串str void test_string3() {string s;string ss(hello);s #;s hello;s ss;cout s endl; }c_str(重点) - - - 返回C格式字符串 void test_string9() {string filename;cin filename;FILE* fout fopen(filename.c_str(), r); }find npos(重点) - - - 从字符串pos位置开始往后找字符c返回该字符在字符串中的位置 void test_string2() {string s1(test.cpp);//读取文件后缀size_t i s1.find(.);string s3 s1.substr(i);cout s3 endl; }rfind - - - 从字符串pos位置开始往前找字符c返回该字符在字符串中的位置 void test_string2() {string s2(test.cpp.tar.zip);//找文件后缀.zipsize_t j s2.rfind(.);//倒着找string s4 s2.substr(j);cout s4 endl; }substr - - - 在str中从pos位置开始截取n个字符然后将其返回 void test_string2() {string s1(test.cpp);//读取文件后缀size_t i s1.find(.);string s3 s1.substr(i);cout s3 endl; }注意 在string尾部追加字符时s.push_back© / s.append(1, c) / s c’三种的实现方式差不多一般情况下string类的操作用的比较多操作不仅可以连接单个字符还可以连接字符串。对string操作时如果能够大概预估到放多少字符可以先通过reserve把空间预留好。 #mermaid-svg-xeZg2J91oq35oiEY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xeZg2J91oq35oiEY .error-icon{fill:#552222;}#mermaid-svg-xeZg2J91oq35oiEY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xeZg2J91oq35oiEY .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-xeZg2J91oq35oiEY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xeZg2J91oq35oiEY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xeZg2J91oq35oiEY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xeZg2J91oq35oiEY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xeZg2J91oq35oiEY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xeZg2J91oq35oiEY .marker.cross{stroke:#333333;}#mermaid-svg-xeZg2J91oq35oiEY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xeZg2J91oq35oiEY .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xeZg2J91oq35oiEY .cluster-label text{fill:#333;}#mermaid-svg-xeZg2J91oq35oiEY .cluster-label span{color:#333;}#mermaid-svg-xeZg2J91oq35oiEY .label text,#mermaid-svg-xeZg2J91oq35oiEY span{fill:#333;color:#333;}#mermaid-svg-xeZg2J91oq35oiEY .node rect,#mermaid-svg-xeZg2J91oq35oiEY .node circle,#mermaid-svg-xeZg2J91oq35oiEY .node ellipse,#mermaid-svg-xeZg2J91oq35oiEY .node polygon,#mermaid-svg-xeZg2J91oq35oiEY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xeZg2J91oq35oiEY .node .label{text-align:center;}#mermaid-svg-xeZg2J91oq35oiEY .node.clickable{cursor:pointer;}#mermaid-svg-xeZg2J91oq35oiEY .arrowheadPath{fill:#333333;}#mermaid-svg-xeZg2J91oq35oiEY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xeZg2J91oq35oiEY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xeZg2J91oq35oiEY .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-xeZg2J91oq35oiEY .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-xeZg2J91oq35oiEY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xeZg2J91oq35oiEY .cluster text{fill:#333;}#mermaid-svg-xeZg2J91oq35oiEY .cluster span{color:#333;}#mermaid-svg-xeZg2J91oq35oiEY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xeZg2J91oq35oiEY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 5 . string类非成员函数 函数功能说明operator尽量少用因为传值返回导致深拷贝效率低operator 重点输入运算符重载operator 重点输出运算符重载getline 重点获取一行字符串relational operators 重点大小比较 operator - - - 尽量少用因为传值返回导致深拷贝效率低 void test_string3()//at失败后会抛异常 {string ss(hello);string retss #;//是一个传值返回代价比较大string ret2 ss hello;cout ret endl;cout ret2 endl;cout endl; }operator 重点- - - 输入运算符重载operator 重点 - - - 输出运算符重载getline 重点 - - - 获取一行字符串 cin 和getline的区别在于遇到空格’ 和换行\n会截止而getline默认只有遇到换行\n才截止因此当我们需要从键盘读取一个含有空格的字符串是只能用getline void test_string3() {string s1;getline(cin, s1, !);cout s1; }relational operators 重点- - - 大小比较 #mermaid-svg-fFODPOHICIusM3Jb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fFODPOHICIusM3Jb .error-icon{fill:#552222;}#mermaid-svg-fFODPOHICIusM3Jb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fFODPOHICIusM3Jb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-fFODPOHICIusM3Jb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fFODPOHICIusM3Jb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fFODPOHICIusM3Jb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fFODPOHICIusM3Jb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fFODPOHICIusM3Jb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fFODPOHICIusM3Jb .marker.cross{stroke:#333333;}#mermaid-svg-fFODPOHICIusM3Jb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fFODPOHICIusM3Jb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fFODPOHICIusM3Jb .cluster-label text{fill:#333;}#mermaid-svg-fFODPOHICIusM3Jb .cluster-label span{color:#333;}#mermaid-svg-fFODPOHICIusM3Jb .label text,#mermaid-svg-fFODPOHICIusM3Jb span{fill:#333;color:#333;}#mermaid-svg-fFODPOHICIusM3Jb .node rect,#mermaid-svg-fFODPOHICIusM3Jb .node circle,#mermaid-svg-fFODPOHICIusM3Jb .node ellipse,#mermaid-svg-fFODPOHICIusM3Jb .node polygon,#mermaid-svg-fFODPOHICIusM3Jb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fFODPOHICIusM3Jb .node .label{text-align:center;}#mermaid-svg-fFODPOHICIusM3Jb .node.clickable{cursor:pointer;}#mermaid-svg-fFODPOHICIusM3Jb .arrowheadPath{fill:#333333;}#mermaid-svg-fFODPOHICIusM3Jb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fFODPOHICIusM3Jb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fFODPOHICIusM3Jb .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-fFODPOHICIusM3Jb .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-fFODPOHICIusM3Jb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fFODPOHICIusM3Jb .cluster text{fill:#333;}#mermaid-svg-fFODPOHICIusM3Jb .cluster span{color:#333;}#mermaid-svg-fFODPOHICIusM3Jb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fFODPOHICIusM3Jb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 6 . string类类型转换接口 string类型转换成内置类型 内置类型转换成string #mermaid-svg-NyeERzVi91iwOvE6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .error-icon{fill:#552222;}#mermaid-svg-NyeERzVi91iwOvE6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NyeERzVi91iwOvE6 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NyeERzVi91iwOvE6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NyeERzVi91iwOvE6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NyeERzVi91iwOvE6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NyeERzVi91iwOvE6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NyeERzVi91iwOvE6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NyeERzVi91iwOvE6 .marker.cross{stroke:#333333;}#mermaid-svg-NyeERzVi91iwOvE6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NyeERzVi91iwOvE6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .cluster-label text{fill:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .cluster-label span{color:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .label text,#mermaid-svg-NyeERzVi91iwOvE6 span{fill:#333;color:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .node rect,#mermaid-svg-NyeERzVi91iwOvE6 .node circle,#mermaid-svg-NyeERzVi91iwOvE6 .node ellipse,#mermaid-svg-NyeERzVi91iwOvE6 .node polygon,#mermaid-svg-NyeERzVi91iwOvE6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NyeERzVi91iwOvE6 .node .label{text-align:center;}#mermaid-svg-NyeERzVi91iwOvE6 .node.clickable{cursor:pointer;}#mermaid-svg-NyeERzVi91iwOvE6 .arrowheadPath{fill:#333333;}#mermaid-svg-NyeERzVi91iwOvE6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NyeERzVi91iwOvE6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NyeERzVi91iwOvE6 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-NyeERzVi91iwOvE6 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-NyeERzVi91iwOvE6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NyeERzVi91iwOvE6 .cluster text{fill:#333;}#mermaid-svg-NyeERzVi91iwOvE6 .cluster span{color:#333;}#mermaid-svg-NyeERzVi91iwOvE6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NyeERzVi91iwOvE6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 7. vs和g下string结构的说明 注意下述结构是在32位平台下进行验证32位平台下指针占4个字节 vs下string的结构 string总共占28个字节内部结构稍微复杂一点先是有一个联合体联合体用来定义string中字 符串的存储空间 当字符串长度小于16时使用内部固定的字符数组来存放 当字符串长度大于等于16时从堆上开辟空间 union _Bxty { // storage for small buffer or pointer to larger onevalue_type _Buf[_BUF_SIZE];pointer _Ptr;char _Alias[_BUF_SIZE]; // to permit aliasing } _Bx;这种设计也是有一定道理的大多数情况下字符串的长度都小于16那string对象创建好之后内部已经有了16个字符数组的固定空间不需要通过堆创建效率高。 其次还有一个size_t字段保存字符串长度一个size_t字段保存从堆上开辟空间总的容量 最后还有一个指针做一些其他事情。 故总共占1644428个字节 g下string的结构 G下string是通过写时拷贝实现的string对象总共占4个字节内部只包含了一个指针该指 针将来指向一块堆空间内部包含了如下字段 空间总大小字符串有效长度引用计数 struct _Rep_base {size_type _M_length;size_type _M_capacity;_Atomic_word _M_refcount; };指向堆空间的指针用来存储字符串。
http://www.zqtcl.cn/news/801770/

相关文章:

  • 网站推广公司兴田德润电话多少wordpress 弹框
  • 大连网站建设谁家好软件开发需要什么技术
  • 广州网站建设哪家便宜成都电商app开发
  • 网站qq访客统计青岛网站设计定制
  • 山东嘉祥做网站的有哪几家销售外包
  • 怎么做网站_旅游网站定位
  • 湛江seo推广公司aso优化渠道
  • 网站设计培训机构内蒙古网上办事大厅官网
  • 什么是网站空间信息网站备案号中信息有变
  • 网站建设的基础怎么提升网站流量
  • 网站开发线框网页设计网站建设过程报告
  • 怎么用html做移动网站吗免费装修设计软件
  • 门头沟石家庄网站建设鞍山怎么样做一个自己的网站
  • 网站安装代码宣传网站建设背景
  • 网站空间续费东莞网站建设(信科分公司)
  • 少儿教育网站建设价格网页制作讲解视频
  • 网站开发方向的工作网站怎么做排名
  • 建设网站烧钱iis配置网站是什么
  • 新网站建设特色网站建设信息表
  • 商城做网站家具网站模板
  • 国有企业网站建设网站悬浮qq
  • 上海建站宝盒微网站生成app
  • 做网站是什么时候分页有哪些制作网站的公司
  • 专业柳州网站建设哪家好5千ip的网站能赚多少钱
  • 网站开发代理最火网页游戏
  • 做网站运营工资多少网站建设协议需要注意的问题
  • 如何建设一个人工智能网站qq头像网站源码
  • 有什么网站可以做外贸出口信息泉州网站制作运营商专业
  • 创业seo快速排名优化公司
  • 安丘网站开发王野天 女演员