关于 CString 的注意事项

1.CString.GetBuffer()

  GetBuffer 申请的内存是未初始化的,当试图将它直接作为参数传递时,使用了未初始化的内存,极有可能导致尾部出现多余的未知字符串(也许是乱码),

  如 abc(GetBuffer(10)); 这是错误的做法。

  正确做法: char * c = GetBuffer(10); memset(c, 0, sizeof(char)*10); abc(c);

2.CString.Format()

  将一个数值转为字符串形式,如果参数是一个很大的数值,接近 4 字节 的峰值 或者 超过 4 字节 的情况下;

  %d 或者 %ld 将得到错误的结果,有时还会影响到 %x 的结果,

  如果单独使用 %x 就能得到正确的 16 进制形式, 但如果同时对同一个变量 进行多个形式获取,将会影响 %x 获取到错误结果。

  如果需要转换的数值很大,尽量不要使用 CString.Format()。

posted on 2017-03-14 10:38  伊扎洛  阅读(103)  评论(0)    收藏  举报

导航