【发布时间】:2018-10-09 03:34:53
【问题描述】:
所以我一直在尝试将整数值转换为 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 状态。
【问题讨论】:
-
我认为两者都不会编译。至少它不会编译here。请发帖minimal reproducible example。
-
testc只是一组指针,但它们并不指向任何地方。所以没有地方存储转换的结果。您可以尝试std::to_wstring(test)并跳过指针。 -
你的 testc[1][0] 没有指向任何可能对第二种情况造成问题的地方
-
旁注:永远不要让非常量指针指向字符串字面量——这实际上是
testc[0][0]=L"hello";正在做的事情。该文字位于只读存储器中。一旦您尝试通过testc对其进行写入,您将得到未定义的行为:可能是段错误。