除了基本的数据类型(int double 。。。),C++还定义了一个内容丰富的抽象数据类型的标准库。其中最重要的标准库类型是string和vector,它们分别定义了大小可变的字符串和集合。string和vector往往将迭代器用作配套类型,用于访问string中的字符,或者vector中的元素。这一篇介绍一下string,下一篇再介绍vector。
标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。标准库string类型的目的就是满足对字符串的一般应用。
与其他的标准库类型一样,用户程序要使用string类型对象,必须包含相关的头文件。
#include<string>
using std::string;
string对象的操作
s.empty() 如果s为空串,则返回true,否则 返回false
s.size() 返回s中字符的个数
s[n] 返回s中位置为n的字符,位置从0开始计数
s1+s2 将s1和s2连接成一个新的字符串,返回新生成的字符串
v1 == v2 比较v1和v2中的内容是否相等
!=,<,<=,>,>= 保持这些操作符惯有的含义
实例:
// stringtest.cpp : 定义控制台应用程序的入口点
#include "stdafx.h"
#include <Windows.h>
#include <string>
using std::string;
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string s0;//默认构造函数 s0为空串
cout<<"0:"<<s0<<endl;
cout<<"1:"<<s0.empty()<<endl;//s.empty()
string s00(s0);//将s00初始化为s0的一个副本
cout<<"2:"<<s00<<endl;
string s1("shufac");//将s1初始化为一个字符串(shufac)字面值副本
cout<<"3:"<<s1<<endl;
cout<<"4:"<<s1.size()<<endl;//s.size() 返回值为unsigned
string s2(s1);//将s2初始化为s1的一个副本
cout<<"5:"<<s2<<endl;
int n=4;
string s3(n,'c');//将s3初始化为字符‘c’的4个副本
cout<<"6:"<<s3<<endl;
string s4(6,'c');//将s3初始化为字符‘c’的4个副本
cout<<"7:"<<s4<<endl;
cout<<"8:"<<s1+s4<<endl;//字符串拼接
cout<<"9:"<<s1[3]<<endl;//s[n] 'f'
string s5="Hello!";//对象赋值
cout<<"10:"<<s5<<endl;
string s6="Hello World!";//对象赋值
cout<<"11:"<<s6<<endl;
string s7=s5+",,,"+s6+"\n";//两个string 对象相加
cout<<"12:"<<s7<<endl;
//从string对象获取字符
string str("some string");
for (string::size_type ix=0;ix !=str.size();++ix)
{
int x=12+ix;
cout<<x<<":"<<str[ix]<<endl;
}
//string 对象的操作
/*
s.empty() 如果s为空串,则返回true,否则 返回false
s.size() 返回s中字符的个数
s[n] 返回s中位置为n的字符,位置从0开始计数
s1+s2 将s1和s2连接成一个新的字符串,返回新生成的字符串
v1 == v2 比较v1和v2中的内容是否相等
!=,<,<=,>,>= 保持这些操作符惯有的含义
*/
system("pause");
return 0;
}
运行结果: