遇到的c/c++问题汇总

来源:互联网 发布:嵌入式开发编程 编辑:程序博客网 时间:2024/06/05 08:42

CvTermCriteria  迭代算法的终止准则

CvTermCriteria criteria = cvTermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 100, 1.0e-4f)

#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER#define CV_TERMCRIT_ITER 1#define CV_TERMCRIT_EPS     2    typedef struct CvTermCriteria   {    int    type;  /* CV_TERMCRIT_ITER 和CV_TERMCRIT_EPS二值之一,或者二者的组合 */    int    max_iter; /* 最大迭代次数 */    double epsilon; /* 结果的精确性 */   }   CvTermCriteria;  /* 构造函数 */  inline  CvTermCriteria  cvTermCriteria( int type, int max_iter, double epsilon );  /* 在满足max_iter和epsilon的条件下检查终止准则并将其转换使得type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS */  CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,                                      double default_eps,                                      int default_max_iters );  


强制类型转换

static_cast < type-id > ( expression )
该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
1--用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。
2--用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
3--把空指针转换成目标类型的空指针。
4--把任何类型的表达式转换成void类型。
 
注意:static_cast不能转换掉expression的const、volitale、或者__unaligned属性。

sprints函数

sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。

格式化数字字符串

  sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代itoa。
  如:
  //把整数123 打印成一个字符串保存在s 中。
  sprintf(s, "%d", 123); //产生"123"
  可以指定宽度,不足的左边补空格:
  sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
  当然也可以左对齐:
  sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
  也可以按照16 进制打印:
  sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐
  sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐


0 0