wcstombs的使用

来源:互联网 发布:景安网络股票 编辑:程序博客网 时间:2024/05/08 05:48

Converts a sequence of wide characters to a corresponding sequence of multibyte characters.

size_t wcstombs(   char *mbstr,   const wchar_t *wcstr,   size_t count );

Parameters

mbstr
The address of a sequence of multibyte characters.
wcstr
The address of a sequence of wide characters.
count

          The maximum number of bytes that can be stored in the multibyte output string.

他的使用很简单。但是在第三个参数的使用的时候经常会出错。

coverity会报告一个潜在的越界错误。

std::string fullpathFilename;    const unsigned int nMaxPathLen = 255;wchar_t szPath[nMaxPathLen + 1] = {0};    GetModuleFileName(NULL, szPath, nMaxPathLen);    wchar_t   *p = wcsrchr(szPath, '\\');    *p = 0;unsigned int _Dsize = (nMaxPathLen + 1) * 2; //错误char *_Dest = new char[_Dsize];    memset(_Dest,0,_Dsize);    wcstombs(_Dest,szPath,_Dsize);    fullpathFilename.append(_Dest);    fullpathFilename.append("\\MemoryDRLocation");delete[] _Dest;    _Dest = NULL;
这里的错误就是误认为该函数第三个参数需要数组的字节长度了。其实他是需要的数组的元素个数。



原创粉丝点击