c、c++知识点
一、
(1)在linux下类似uint8_t这样的文件定义在头文件<stdint.h>里面
(2)截取了stdint.h头文件里的一些常用部分
二、c++中c_str()用法
函数返回一个指向正规C字符串的指针, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s="1234";
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
应该这样用:
char c[20];
string s="1234";
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
再举个例子 c_str() 以 char* 形式传回 string 内含字符串 如果一个函数要求char*参数,
可以使用c_str()方法:
string s = "Hello World!";
printf("%s", s.c_str()); //输出 "Hello World!"
三、_vsnprintf
_vsnprintf,C语言库函数之一,属于可变参数。用于向字符串中打印数据、数据格式用户自定义。 目录
头文件: #include <stdarg.h>
函数声明: int vsnprintf(char *str, size_t size, const char *format, va_list ap);
参数说明:
char *str [out],把生成的格式化的字符串存放在这里.
size_t size [in], buffer可接受的最大字节数,防止产生数组越界.
const char *format [in], 指定输出格式的字符串,它决定了你需要提供的可变参数的类型、个数和顺序。
va_list ap [in], va_list变量. va:variable-argument:可变参数 函数功能:将可变参数格式化输出到一个字符数组。 用法类似于vsprintf,不过加了size的限制,防止了内存溢出(size为str所指的存储空间的大小)。
返回值:执行成功,返回写入到字符数组str中的字符个数(不包含终止符),最大不超过size;执行失败,返回负值,并置errno.
[1] 备注: linux环境下是:vsnprintf VC6环境下是:_vsnprintf
四、关于基类指针访问子类非虚函数
#include<iostream> #include<stdint.h> template<class T> class CallMeA { T data; public: void A() { std::cout<<"CallMeA-----------------A"<<std::endl; } }; template<class T> class CallMeB:public CallMeA<T> { T element; public: void B() { std::cout<<"CallMeB"<<std::endl; } }; int main() { CallMeA<int>* ab = new CallMeB<int>; ab->A(); ab->B(); return 0; }
会报错
test1.cc: In function ‘int main()’:
test1.cc:31: error: ‘class CallMeA<int>’ has no member named ‘B’
由于B()不是虚方法,且CallMeA没有这种方法,因此如果没有B对象或者B指针,将不能访问它。
按照
posix
标准,一般整形对应的
*_t
类型为:
1
字节
uint8_t
2
字节
uint16_t
4
字节
uint32_t
8
字节
uint64_t