C++程序设计 string(字符串类) vector(容器类)
string对象的定义和初始化 为了在程序中使用string类型,必须包含string头文件,并导入名字空间,如下: #include <string> using namespace std; string 类对象的定义和初始化 string s1; // 默认初始化,对象s1是个空字符 string s2="hello"; //复制初始化 string s3("kitty"); // 直接初始化 string s4=s2; //复制s2的值到对象s3
string对象的输入输出 } 【例 3.1】string对象的输入和输出操作。 #include <iostream> #include <string> using namespace std; int main( ) { string s1, s2;// 定义s1、s2,并初始化s1、s2为空字符串 // 依次读取字符串一赋给s1,字符串二赋给s2 cin >> s1 >> s2; // 输入 hello world <CR> cout << s1<< s2 << endl; // 输出s1和s2 return 0; }
string对象的操作 1.string的大小和容量函数 一个C++字符串存在3种大小,相应的函数分别是: 函数size( )和length( )等价,都返回string对象中字符个数。函数empty( )判断字符串是否为空,判断字符串是否空也可以利用函数size( )或者length( ),将长度与0比较;
string对象的操作 string的大小和容量函数的使用。 #include <iostream> #include <string> using namespace std; int main( ) { string s("Hello World!"); // s初始化为"Hello World!" cout << s.length( ) << endl;//访问对象的成员用.操作符 cout << s.size( ) << endl; if ( s.empty( ) ) cout << "s 是空串" << endl; else cout << "s 长度是" << s.size( ) << endl; return 0; }
string对象的操作 2.string关系运算 例如: string subStr = "Hello"; string phrase = "Hello World"; string str = "Hi"; 如果两两比较,则subStr<phrase,str>subStr,str>phrase。
string对象的操作 3.string对象的赋值 string对象的赋值可使用操作符运算符=,如: string strTo, strFrom("hello"); strTo = strFrom; strFrom ="C++";
string对象的操作 4.string对象相加 相加指字符串连接,支持string对象和string对象、string对象与const char*对象、string对象与char对象,可以通过使用加运算符(+)或复合赋值运算符(+=)连接,结果生成一个新的string对象,例如 string s1("Hello "); string s2("World\n"); 下面通过加法生成新的string对象: string s3 = s1 + s2; // s3是:Hello World\n, string + string string s4 = s1 + "Kitty"; // s4是:Hello Kitty string + 字符串字面值
string对象的操作 5.string对象的字符元素存取 string类型支持通过下标运算符[ ]访问其中的字符元素,下标运算符[ ],string对象的下标从0开始,如果s是一个string对象且s不空,则s[0]就是字符串的第一个字符,s[1]就表示第二个字符,而s[s.size( )-1]则表示s的最后一个字符。 例 string s1("Hello"); cout<<s1[0]<<s1[s1.size()-1]<<endl; //输出Ho
标准库vector类型 vector称为容器,格式是将数据类型放在vector后面的尖括号中,例如: vector<int> ivec; // ivec可存取int类型的元素 vector<double> dvec; // dvec可存取double类型元素 vector<string> svec; // svec可存取string类型元素 为了在程序中使用vector类型,必须包含vector头文件,并导入名字空间,如下: #include <vector> using namespace std; vector<int> ivec;
vector对象的定义和初始化 1. vector<T> iv1; 2. vector<int> iv2(10, -1); 创建一个包含10个int类型数据的vector,每个元素都初始化为-1; vector<string> sv1(10, "hi!"); 创建一个包含10个string类型数据的vector,每个元素都初始化为"hi!"。
vector对象的定义和初始化 3. vector<T> v2(v1) 或 vector<T> v2=v1 利用一个已经存在的对象来初始化 如: vector<int> iv1(10,-1); vector<int> iv2(iv1); // 通过从iv1复制元素来创建iv2 vector<int> iv3=iv1; // 通过从iv1复制元素来创建iv3 4. vector<T> v4(n) 创建一个包含n个T类型数据的vector对象,vector中元素的初始化,取决于vector中存储的元素的数据类型,如果vector保存基本数据类型的元素(如int、float),则用0初始化每个元素。 vector<float> fvec(10); // 10个元素,初始化为0
vector对象的操作 vector的大小和容量函数 vector<int> iv1(10, -1); vector的empty( )和size( )函数与string类似,size( )返回元素的个数。 如: vector<int> iv1(10, -1); cout<<"The size of iv1: "<< iv1.size()<<endl; //输出: The size of iv1: 10
vector对象的操作 2.向vector中添加元素 push_back( )函数将一个新元素添加到vector对象的后面,也就是“尾插”。 例: string word="Hello Kitty";// 定义一个string类对象并初始化 vector<string> svec; // 定义一个空vector svec.push_back(word); // word尾插到svec中
vector对象的操作 3.vector的下标操作 4.删除vector中的元素 vector支持通过下标运算符[ ]访问元素,下标从0开始,如果ivec是一个vector<int>对象且ivec不空,则ivec[0]就是ivec的第一个字符,ivec[1]表示第二个字符,ivec[ivec.size( )-1]表示ivec的最后一个元素。 4.删除vector中的元素 pop_back( ):功能是删除vector中最后一个元素
vector对象的操作 运行结果: #include <iostream> The size of iv: 2 1, 2 The size of iv: 1 1 #include <iostream> #include <vector> using namespace std; int main( ) { vector<int> iv; iv.push_back( 1 ); // 填充iv iv.push_back( 2 ); cout<<"The size of iv: "<<iv.size()<<endl; cout << iv[0] << ", "<<iv[1]<<endl; // 输出iv[0]和iv[1] ivec.pop_back( ); // 删除最后一个元素 cout << iv[0] <<endl; return 0; }