1.在VS2005中使用strcpy、strcat、sprintf出现如:mfc中'strcpy' was declared deprecated警告

这是因为VS2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strcat等。    对于这些问题,VC2005建议使用这些函数的更高级的安全版本,即在这些函数名后面加了一个_s的函数。这些安全版本函数使用起来更有效,也便于识别,如:strcpy_s,calloc_s等。    当然,如果执意使用老版本、非安全版本函数,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。办法是在编译选项 C/C++ | Preprocessor | Preprocessor Definitions中,增加_CRT_SECURE_NO_DEPRECATE标记即可

正如我所提到的,另外一个接受安全检查的常用函数strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为,正如我所提到的,为了安全需要避免这些不可预料的行为,这有一个使用安全的strcpy_s函数的例子。
  
  char source[] = "Hello world!";
  char destination[20] = { 0 };
  strcpy_s(destination, sizeof (destination) / sizeof (destination[0]), source);
  
  有很多原因来喜欢这个新的strcpy_s函数。最明显的区别是的额外的、以字节为单位的参数,它用来确认缓冲区大小。这允许strcpy_s函数可以进行运行时检查,以确定写入的字符没有超过目标缓冲区的边界。还有一些其它的检查方法来确定参数的有效性。在调试版本中这些检测方法,包括显示调试报告的"断言"(assertions)方法,如果它们的条件没有满足,它们将显示调试报告。无论是调试还是发行版本,如果一个特定的条件没有得到满足,一个无效的参数管理器将被调用,它默认的行为是抛出一个访问冲突来终止应用程序。这非常好的实现了让你的应用程序持续运行,而不会产生不可预期的结果。当然,这种情况完全可以通过确保类似于strcpy_s的函数不调用无效参数来避免。
  
  前一个例子可以通过新的_countof宏来进一步简化,这个宏移抛开了对有错误倾向的sizeof操作符的需要。_countof宏返回C类型数组的元素数量。这个宏本身对应了一个模版,如果传递一个原始指针的话,它将无法通过编译。这有一个例子:
  
  strcpy_s(destination, _countof(destination), source);

一共不是三个参数,strcpy_s(a,sizeof(a),b)  其中sizeof(a)表示目的指针能够接受到的最大的字符的个数,

2. warning C4996: '_itoa' was declared deprecated

将_itoa(DispNum+1, s, 10);替换为_itoa_s(DispNum+1, s, 10,10);
参考(http://zhidao.baidu.com/question/475097271.html?qbl=relate_question_4&word=%27_itoa%27)
errno_t _itoa_s(
int value,
char *buffer,
size_t sizeInCharacters,
int radix
);
少了一个参数 radix 进制
改成
_itoa_s (DispNum+1,s,,); //10进制显示 支持2-36 进制

3.将CString类型转换成字符数组类型

CString str="hello";
char ch[20];
memset(ch,0,20);
memcpy(ch,str,str.GetLength());

 4. CString 和int相互转化

CString str = _T("123");

int i = _ttoi(str);

===============

int i = 123;

CString str ;

str.Format(_T("%d"), i);

  

 

MFC---关于string.h相关函数的更多相关文章

  1. 字符串操作函数<string.h>相关函数strcpy,strcat,等源码。

    首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...

  2. 头文件 string.h cstring string 区别

    1.#include <cstring>   //不可以定义string s:可以用到strcpy等函数using   namespace   std; #include <stri ...

  3. C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  4. #include <string.h>

    1 _memccpy 2 _memicmp 3 _strlwr 4 _strrev 5 _strset 6 _strupr 7 memccpy 8 memchr 9 memcpy 10 memicmp ...

  5. 转载:C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  6. CString、string、string.h的区别

    CString.string.string.h的区别   CString:CString是MFC或者ATL中的实现,是MFC里面封装的一个关于字符串处理的功能很强大的类,只有支持MFC的工程才能使用. ...

  7. C++中cstring.h和string.h的区别

    转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...

  8. 《C标准库》——之<string.h>

    <string.h>里的字符串操作函数是经常要用到的,因此阅读了源码后自己实现了一些: 拷贝函数 void * Mymemcpy(void * sDst, const void * sSr ...

  9. <string> 与<string.h>、<cstring>的区别

    <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...

随机推荐

  1. servlet编程操作

    所谓servlet指:服务器处理来自Web浏览器或其他客户端的HTTP请求的服务器程序.客户端向服务器发送Http请求,经Tomcat封装处理转给Servlet容器,Servlet容器在把请求或回应交 ...

  2. 使用selenium爬取网站动态数据

    处理页面动态加载的爬取 selenium selenium是python的一个第三方库,可以实现让浏览器完成自动化的操作,比如说点击按钮拖动滚轮等 环境搭建: 安装:pip install selen ...

  3. Python全栈之路----hash函数

    hash函数: 一般翻译为“散列”或“哈希”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可 ...

  4. DP常用模板

    递推模板: 从结果往回推,需要设定边界为无穷大,并建立状态转移方程 ;j<n;j++) d[n][j]=a[n][j];///边界处理 ;i>=;i--){ ;j<i;j++)/// ...

  5. 关于C语言实现判断给定一个数,判断其是否是一个质数(素数)。

    Annotation:⒈我们需要明确0,1既不是质数,又不是合数.⒉其次我们需要知道一个质数,质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数.(自然数:自然数用以计量事物的件数或表示事 ...

  6. Centos6.8 搭建Nginx服务器

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,其特点是占有内存少,并发能力强,业界内的评价一直很不错,反正用过的都说好,虽然我还 ...

  7. mingw using pthread

    转载http://www.cnblogs.com/tfanalysis/p/5505163.html ftp://sourceware.org/pub/pthreads-win32/ 有的时候需要使用 ...

  8. objdump和backtrace的配合使用

    在程序调试过程中程序崩溃的情况时有发生,把出问题时的调用栈信息打印出来是一种不错的解决办法. 当然还有一些其他方法:https://www.cnblogs.com/jiangyibo/p/865372 ...

  9. openstry lua redis实现负载均衡

    需求: 通过URI地址http://10.0.0.148/test2?uuid=123的uuid参数值的第一位,去实现redis的负载均衡 若uuid第一位为1,那么去10.0.0.148的redis ...

  10. Postgresql导出数据报版本不对

    zabbix使用得数据库是Postgresql,最近zabbix4.0版本出来了,准备把zabbix升级,得先把数据库备份,但是一直报错,如下:     查找服务器上是否有10的版本,也一直没找到   ...