c++基础知识
这一章节我们主要针对没有c++基础的同学开设的,主要讲解一下我们系统中常用c++语法及常用类;
类
提到c++就不得不先提一下 类,也不要想得太复杂,把它当C语言中的结构体来理解就可以了,举个例子:
// C
struct Position {
int left;
int top;
int width;
int height;
};
// c++
class Position {
public:
int left;
int top;
int width;
int height;
};
定义变量:
// C
struct Position pos;
// c++
Position pos;
操作变量:
// C和c++一样
pos.left = 0;
类比C语言中的结构体多了继承、多态、重载还有访问权限的一些概念,对于只熟悉C语言的同学可以不用过多的关注这些细节,只要掌握如何使用即可;
另外,类里可以直接定义函数,C语言中的结构体是定义函数指针,这一点有点不一样,类定义完函数后,就可以跟操作变量一样使用了,这里举一个在我们框架中常用的例子:
// 设置文本内容,其中 mTextView1Ptr为ZKTextView类型的指针变量
mTextView1Ptr->setText("Hello");
常用类
string类
string类其实就是对字符串进行了一些封装,并提供了一大堆函数,只熟悉C语言的同学只需要知道一个函数就可以了:c_str()
,该函数会返回string类中的字符串数据,这里也举一个在我们框架中常用的例子:
// 输入框回调接口
static void onEditTextChanged_Edittext1(const std::string &text) {
// c_str()函数的返回值类型:const char *
const char *pStr = text.c_str();
// 之后就可以像普通的字符串操作了,如获取字符串长度strlen(pStr) 等等
}
再举一个获取文本控件内容的例子:
// std为命名空间,std::string表示使用std下的string类,不用过多的理会
// 碰到string类,我们参考下面定义就可以了
std::string text = mTextView1Ptr->getText();
// 之后的操作就都一样啦
const char *pStr = text.c_str();
格式化输出函数snprintf
函数原型:
int snprintf(char* dest_str,size_t size,const char* format,...);
功能:
将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。
所需头文件:
#include <stdio.h>
格式化参数
规定符
%d
十进制有符号整数%u
十进制无符号整数%f
浮点数%s
字符串%c
单个字符%p
指针的值%e
指数形式的浮点数%x
, %X 无符号以十六进制表示的整数%o
无符号以八进制表示的整数%g
把输出的值按照%e或者%f类型中输出长度较小的方式输出%p
输出地址符%lu
32位无符号整数%llu
64位无符号整数说明
(1).可以在“%”和字母之间插进数字表示最大场宽。
例如:%3d表示输出3位整型数,不够3位右对齐。
%9.2f表示输出场宽为9的浮点数,其中小数位为2,整数位为6,
小数点占一位,不够9位右对齐。
%8s表示输出8个字符的字符串,不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽,将按其实际长度输出。
但对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。
另外,若想在输出值前加一些0,就应在场宽项前加个0。
例如:%04d表示在输出一个小于4位的数值时,将在前面补0使其总宽度为4位。
如果用浮点数表示字符或整型量的输出格式,小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
例如:%6.9s表示显示一个长度不小于6且不大于9的字符串。若大于9,则第9个字符以后的内容将被删除。
(2).可以在“%”和字母之间加小写字母l,表示输出的是长型数。
例如:%ld表示输出long整数
%lf表示输出double浮点数
(3).可以控制输出左对齐或右对齐,即在"%"和字母之间加入一个"-"号, 说明输出为左对齐, 否则为右对齐。
例如:%-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐特殊规定符
\n
换行\f
清屏并换页\r
回车\t
Tab符
例子
直接输出整型
char buf[64] = {0}; snprintf(buf, sizeof(buf), "%d", 314); LOGD("%s", buf);//日志输出buf
日志输出为
314
控制整型的位数
char buf[64] = {0}; snprintf(buf, sizeof(buf), "%05d", 314); //格式化为5位数,不足5位数,前面补0 LOGD("%s", buf);//日志输出buf字符串
日志输出为
00314
直接输出浮点数
char buf[64] = {0}; snprintf(buf, sizeof(buf), "%f", 3.14); LOGD("%s", buf);//日志输出buf字符串
日志输出为
3.140000
控制输出浮点数格式
char buf[64] = {0}; //输出小数,共6个字符宽度(含小数点在内), 3个小数位,两个整数位,整数不足两位的则补0 snprintf(buf, sizeof(buf), "%06.3f", 3.14); LOGD("%s", buf);//日志输出buf字符串
日志输出为
03.140