c、c++知识点

时间:2023-02-25 11:42:25

一、

  (1)在linux下类似uint8_t这样的文件定义在头文件<stdint.h>里面

    (2)截取了stdint.h头文件里的一些常用部分

    

    c、c++知识点

二、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 ;
}

会报错

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