1.使用string类来处理字符串
C++中的string类定义了string类型,它包含了很多有用的函数,可以方便操作字符串。
头文件是: #include<string>
构造一个字符串:
string s("Welcome to C++");
string s(s1);
追加字符串:
s1.append(" to C++");
s1.at(3); 返回下标处的字符
s1.clear(); 清除当前字符串的所有字符
s1.erase(2,3); 删除当前字符串下标2开始的3个字符(包括2)
s1.empty(); 是否为空?空返true
s1.length(); 长度,字符个数
s1.size(); 大小(与length相同)
s1.capacity(); 分配的存储空间大小
s1.compare(s2); s1与s2比较,>大于0的值、=返回0、<小于0的值
s1.substr(0,1); 返回从0开始的1个字符组成的字串
s1.substr(3); 返回从3开始的所有字串
s1.find("ch"); 字符串ch出现的第一个位置的下标 //如果没有找到,返回string::npos(表示not a position),npos是string类定义的一个常量
s1.find("o",6); 从下标6开始出现o的第一个位置下标
s1.insert(2,"and"); 在s1的下标2处插入and
s1.insert(1,4,'B'); 在s1下标1处插入4个B字符
s1.replace(11,4,"C++"); 替换s1从下标11开始的4个字符,变为C++
string s1="ABC";
string s2=s1; //将s1的内容复制到s2
2.把数字转换成字符串
使用<sstream>头文件中的stringstream类。
stringstream ss;
ss<<3.14159;
string s=ss.str;
判断字符串是否为空:!ss.eof()
3.关于string& s和const string& s
const:常量,字符串字面值
const string&:C++规定普通引用不允许指向临时变量,只有常引用可以
string&:常引用
虽然对象参数的传递方式采用传值、传引用都可以,但最好使用传引用,因为传值需要额外的时间和内存空间。
const 修饰成员变量:
const修饰指针变量时:
(1)只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
(2)只有一个const,如果const位于*右侧,表示指针本身是常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。
(3)两个const,*左右各一个,表示指针和指针所指数据都不能修改。
4.对象数组5.实例成员和静态成员(Instance and Static Members)
静态变量由类中的所有对象共享;静态函数不能访问类的实例成员。
为了声明一个静态变量或静态函数,需在变量或函数声明前放置修饰符static。
静态数据域初始化:
int Circle::numberofObjects=0;
通过类名来访问静态成员,如Circle::
6.UML符号
+:共有变量或函数
—:私有变量或函数
下划线:静态变量或函数
7.只读成员函数(给函数参数/成员函数加上关键字const)
声明:double getArea() const;
double getRadius() const;
实现:double Circle::getArea() const
{
return radius*radius*3.14159;
}
double Circle::getRadius() const
{
return radius;
}