首页 > 解决方案 > C++ 将 int 转换为 wchar_t*

问题描述

所以我一直在尝试将整数值转换为 wchar_t*。这是我运行的测试,所以我可以尽可能地简化它。

int test=123;
wchar_t *testc[12][12];testc[0][0]=L"hello";
_itow(test,testc[0][0],10);
wcout<<testc[0][0];

这段代码在这里编译,但也给了我厄运的 Not Responding 错误。我的理解非常奇怪的是为什么会这样

int test=123;
wchar_t *testc[12][12];testc[0][0]=L"hello";
_itow(test,testc[1][0],10);
wcout<<testc[0][0]<<testc[1][0];

工作没有任何问题,并按预期显示输出“hello123”。

知道为什么会这样吗?

我的项目有一些类似于显示的第一个代码的事件(除了 wcout 部分),因此我想了解为什么它们给我的 Not Responding 状态。

标签: c++intwchar-t

解决方案


您的代码的主要问题是没有为 testc[1][0] 分配内存。此外,最好使用标准 c++ 函数,如 std::to_wstring 而不是 _itow。

所以这里是您的问题的示例代码:

int main()
{
  int test=123;
  wchar_t *testc[12][12];
  testc[0][0]=L"hello";
  testc[1][0] = new wchar_t[4];
  std::wstring temp  = std::to_wstring(123);
  for(int i=0;i<temp.length();i++)
  {
      testc[1][0][i] = temp[i];
  }
  wcout<<testc[0][0]<<testc[1][0];    
  return 0;
}

这只是示例代码,我假设在您的程序中您正在处理内存分配和释放


推荐阅读