【问题标题】:Convert char* to wchar_t* using mbstowcs_s使用 mbstowcs_s 将 char* 转换为 wchar_t*
【发布时间】:2015-04-24 12:01:38
【问题描述】:

我尝试将 char* 转换为 wchar_t*,但在使用 mbstowcs 时遇到了一些问题,Visual Studio 需要 mbstowcs_s...

char *port; 
size_t size = strlen(port) + 1;  
wchar_t* portName = new wchar_t[size]; 
mbstowcs(portName, port, size);

如何将函数更改为 mbstowcs_s?

【问题讨论】:

  • 您遇到了什么问题?你检查过MSDN reference on mbstowcs_s吗?
  • 禁用 C4996 怎么样?
  • mbstowcs_s相比,std::stringstd::wstring 对您的应用程序安全性的好处将远远大于mbstowcs_s

标签: c++ visual-studio-2013 char


【解决方案1】:

当使用安全方法的修复如此简单时,我不建议禁用安全代码警告,因此您可以这样做:

    const char *port="8080";
    size_t size = strlen(port) + 1;  
    wchar_t* portName = new wchar_t[size]; 

    size_t outSize;
    mbstowcs_s(&outSize, portName, size, port, size-1);

    std::wcout << portName << std::endl;

在 VS2013 上使用 cl /W3 /EHsc 测试。

【讨论】:

  • 小心不要造成内存泄漏!删除端口名
  • size 和 size-1 在 API 中的作用是什么?
猜你喜欢
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2015-08-05
相关资源
最近更新 更多