C ++ конвертировать int в wchar_t * - PullRequest
0 голосов
/ 28 апреля 2018

Итак, я пытался преобразовать целочисленные значения в 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 в Doom. Что очень странно для моего понимания, почему это

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.

1 Ответ

0 голосов
/ 28 апреля 2018

Основная проблема с вашим кодом - не выделение памяти для 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;
}

Это просто пример кода, и я предполагаю, что в вашей программе вы заботитесь о распределении и освобождении памяти

...