zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    第四十七课、父子间的冲突
    第四十六课、继承中的构造与析构
    第四十五课、不同的继承方式
    第四十四课、继承中的访问级别
    第四十三课、继承的概念和意义
    第四十二课、类型转换函数(下)
    第四十一课、类型转化构造函数(上)
    暴力大法好
    HideProcess
    Hduacm—5497
  • 原文地址:https://www.cnblogs.com/ztteng/p/3326701.html
Copyright © 2011-2022 走看看