您现在的位置是:主页 > news > wordpress最大上传大小限制/seo网站推广软件 快排

wordpress最大上传大小限制/seo网站推广软件 快排

admin2025/5/2 7:13:00news

简介wordpress最大上传大小限制,seo网站推广软件 快排,软件技术和软件工程有什么区别,深圳做网站公司那家比较好STL常用容器--string容器1 string容器基本概念2 string容器常用操作2.1 string 构造函数2.2 string基本赋值操作2.3 string存取字符操作2.4 string拼接操作2.5 string查找和替换2.6 string比较操作2.7 string子串2.8 string插入和删除操作2.9 string和c-style字符串转换3 案例3…

wordpress最大上传大小限制,seo网站推广软件 快排,软件技术和软件工程有什么区别,深圳做网站公司那家比较好STL常用容器--string容器1 string容器基本概念2 string容器常用操作2.1 string 构造函数2.2 string基本赋值操作2.3 string存取字符操作2.4 string拼接操作2.5 string查找和替换2.6 string比较操作2.7 string子串2.8 string插入和删除操作2.9 string和c-style字符串转换3 案例3…

STL常用容器--string容器

  • 1 string容器基本概念
  • 2 string容器常用操作
    • 2.1 string 构造函数
    • 2.2 string基本赋值操作
    • 2.3 string存取字符操作
    • 2.4 string拼接操作
    • 2.5 string查找和替换
    • 2.6 string比较操作
    • 2.7 string子串
    • 2.8 string插入和删除操作
    • 2.9 string和c-style字符串转换
  • 3 案例
    • 3.1 大小写转换
    • 3.2 解析字符串

1 string容器基本概念

C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件<string>。

String和c风格字符串对比:

  1. Char是一个指针,String是一个类
    string封装了char
    ,管理这个字符串,是一个char*型的容器。

  2. String封装了很多实用的成员方法
    查找find,拷贝copy,删除delete 替换replace,插入insert

  3. 不用考虑内存释放和越界
    string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。



2 string容器常用操作

2.1 string 构造函数

string();					//创建一个空的字符串 例如: string str;      
string(const string& str);	//使用一个string对象初始化另一个string对象,例如: string s; string s1(s);
string(const char* s);		//使用字符串s初始化,例如: const char *s = "123"; string str(s);
string(int n, char c);		//使用n个字符c初始化,例如: string s(5, 'c');
/** string 构造函数*/#include <iostream>
#include <string>
using namespace std;int main()
{string s;string s1(s);const char *str = "123";string s2(str);string s3(4, 'a');cout << "s= "  << s << endl;cout << "s1= " << s1 << endl;cout << "s2= " << s2 << endl;cout << "s3= " << s3 << endl;return 0;
}

2.2 string基本赋值操作

string& operator=(const char* s);		//char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);		//把字符串s赋给当前的字符串
string& operator=(char c);				//字符赋值给当前的字符串string& assign(const char *s);			//把字符串s赋给当前的字符串
string& assign(const char *s, int n);	//把字符串s的前n个字符赋给当前的字符串
string& assign(const string &s);		//把字符串s赋给当前字符串
string& assign(int n, char c);			//用n个字符c赋给当前字符串
string& assign(const string &s, int start, int n);	//将s从start开始n个字符赋值给字符串
/** string 基本赋值操作*/#include <iostream>
#include <string>
using namespace std;int main()
{const char *str = "123";const string s = "abcef";char c = 'A';string s1; #if 1s1 = str;cout << s1 << endl;s1 = s;cout << s1 << endl;s1 = c;cout << s1 << endl;
#endif#if 1s1.assign(str);cout << s1 << endl;s1.assign(str, 2); cout << s1 << endl;s1.assign(s);cout << s1 << endl;s1.assign(4, c); cout << s1 << endl;s1.assign(s, 0, 3); cout << s1 << endl;
#endifreturn 0;
}

2.3 string存取字符操作

char& operator[](int n);		//通过[]方式取字符char& at(int n);				//通过at方法获取字符
// []和at的区别: []越界访问不会抛出异常,at()越界访问会抛出异常
#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;int main()
{string str = "hello world";for (int ii = 0; ii < str.size(); ++ii){   //cout << str[ii] << " ";cout << str.at(ii) << " ";}   cout << endl;try {   //cout << str[100] << endl;cout << str.at(100) << endl;}   catch(out_of_range &e) {   cout <<  e.what() << endl;}   catch(...){   cout << "其他异常" << endl;}   return 0;
}

2.4 string拼接操作

string& operator+=(string& str);			//重载+=操作符
string& operator+=(char* str);				//重载+=操作符
string& operator+=(char c);					//重载+=操作符string& append(char *s);					//把字符串s连接到当前字符串结尾
string& append(char *s, int n);				//把字符串s的前n个字符连接到当前字符串结尾
string& append(string &s);					//同operator+=()
string& append(string &s, int pos, int n);	//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string& append(int n, char c);				//在当前字符串结尾添加n个字符c
#include <iostream>
#include <string>
using namespace std;int main()
{string s1 = "abc";string s2 = "123";char *str = const_cast<char*>("456");char c    = 'z';string s3; #if 1s3 = s1+s2;cout << s3 << endl;s3 = s1+str;cout << s3 << endl;s3 = s1+c;cout << s3 << endl;
#endif#if 1s3 = s2.append(str);cout << s3 << endl;s3 = s2.append(str, 2); cout << s3 << endl;s3 = s2.append(s1);cout << s3 << endl;s3 = s2.append(s1, 0, 1); cout << s3 << endl;s3 = s2.append(4, c); cout << s3 << endl;
#endifreturn 0;

2.5 string查找和替换

//未找到返回-1
int find(string& str, int pos = 0) const; 		//查找str第一次出现位置,从pos开始查找
int find(char* s, int pos = 0) const;  			//查找s第一次出现位置,从pos开始查找
int find(char* s, int pos, int n) const;  		//从pos位置查找s的前n个字符第一次位置
int find(char c, int pos = 0) const;  			//查找字符c第一次出现位置int rfind(string& str, int pos = npos) const;	//查找str最后一次位置,从pos开始查找
int rfind(char* s, int pos = npos) const;		//查找s最后一次出现位置,从pos开始查找
int rfind(char* s, int pos, int n) const;		//从pos查找s的前n个字符最后一次位置
int rfind(char c, int pos = 0) const; 			//查找字符c最后一次出现位置string& replace(int pos, int n, string& str); 	//替换从pos开始n个字符为字符串str
string& replace(int pos, int n, char* s); 		//替换从pos开始的n个字符为字符串s
#include <iostream>
#include <string>
using namespace std;int main()
{string s = "hello world";char *str = const_cast<char*>("l");int ret = 0;ret = s.find(str);cout << ret << endl;ret = s.find(str, 5); cout << ret << endl;ret = s.rfind(str);cout << ret << endl;string s1 = "hi";cout << s << endl;s.replace(0, 5, s1);cout << s << endl;return 0;
}

2.6 string比较操作

/*
compare函数在>时返回大于0的数,<时返回小于0的数,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的A比小写的a小。
*/
int compare(string &s) const;//与字符串s比较
int compare(char *s) const;//与字符串s比较
#include <iostream>
#include <string>
using namespace std;int main()
{string s1 = "aa";string s2 = "ab";char *s3  = const_cast<char*>("aa");string s4 = "A";//s4 < s1 == s3 < s2int ret = s1.compare(s2);cout << ret << endl;ret = s1.compare(s3);cout << ret << endl;ret = s1.compare(s4);cout << ret << endl;return 0;
}

2.7 string子串

string substr(int pos = 0, int n = npos) const;	//返回由pos开始的n个字符组成的字符串
#include <iostream>
#include <string>
using namespace std;int main()
{string s = "hello world";string s1; s1 = s.substr(1, 4); cout << s1 << endl;return 0;
}

2.8 string插入和删除操作

string& insert(int pos, char* s); 			//在pos位置前插入字符串s
string& insert(int pos, string& str); 		//在pos位置前插入字符串str
string& insert(int pos, int n, char c);		//在指定位置插入n个字符cstring& erase(int pos, int n = npos);		//删除从Pos开始的n个字符 
#include <iostream>
#include <string>
using namespace std;int main()
{string s = "hello world";string s1 = "abc";char *str = const_cast<char*>("efg");cout << s << endl;s.insert(1, s1);cout << s << endl;s = "hello world";cout << s << endl;s.insert(1, str);cout << s << endl;s = "hello world";cout << s << endl;s.insert(1, 2, 'a');cout << s << endl;s = "hello world";cout << s << endl;s.erase(1, 2);cout << s << endl;return 0;
}

2.9 string和c-style字符串转换

//string 转 char*
string str = "hello world";
const char *cstr = str.c_str();//char* 转 string 
char *cs = const_cast<char*>("hello world");
string s(cs);

注意1
在c++中存在一个从const char*到string的隐式类型转换,却不存在从一个string对象到C_string的自动类型转换。对于string类型的字符串,可以通过c_str()函数返回string对象对应的C_string.

通常,程序员在整个程序中应坚持使用string类对象,直到必须将内容转化为char*时才将其转换为C_string.

注意2
为了修改string字符串的内容,下标操作符[]和at都会返回字符的引用。但当字符串的内存被重新分配之后,可能发生错误.

3 案例

3.1 大小写转换

#include <iostream>
#include <string>
using namespace std;int main()
{string s = "abcdEFGh!";cout << s << endl;// 小写转大写for (auto &i : s){   i = toupper(i);}   cout << s << endl;// 大写转小写for (auto &i : s){   i = tolower(i);}   cout << s << endl;return 0;

3.2 解析字符串

将网站www.baidu.com中每段存放在vector容器中

#include <iostream>
#include <string>
#include <vector>
using namespace std;int main()
{string s = "www.baidu.com";string str;vector<string> v;int start = 0;int pos = -1; while (true){   pos = s.find(".", start);       // 找到第一个.的位置if (-1 == pos)  // 将com存入vector容器中{   str = s.substr(start, s.size() - start);v.push_back(str);break;}   str = s.substr(start, pos - start);     // 找字串v.push_back(str);   // 压入容器start = pos + 1;}   // 打印方式一for (auto i : v){   cout << i << endl;}   /*  * 打印方式二for (vector<string>::iterator it = v.begin(); it != v.end(); ++it){cout << *it << endl;}*/return 0;
}