C++ 将int转换为const wchar\t*

C++ 将int转换为const wchar\t*,c++,C++,正如标题所示,我想知道将int转换为const wchar\u t*的最佳方法。 事实上,我想使用\u tcscpy功能 _tcscpy(m_reportFileName, myIntValue); 这不是“转换”。这是一个分两步的过程: 使用宽字符将数字格式化为字符串 在调用中使用字符串的地址 第一件事可以通过使用来完成,例如,假设您正在使用启用的宽字符进行构建 当然,您可以选择将字符串直接格式化为 MyRePrimeFieldNo/,删除需要复制的全部。< P>因为您使用的是 C方法< /

正如标题所示,我想知道将
int
转换为
const wchar\u t*
的最佳方法。 事实上,我想使用
\u tcscpy
功能

_tcscpy(m_reportFileName, myIntValue);
这不是“转换”。这是一个分两步的过程:

  • 使用宽字符将数字格式化为字符串
  • 在调用中使用字符串的地址
  • 第一件事可以通过使用来完成,例如,假设您正在使用启用的宽字符进行构建


    当然,您可以选择将字符串直接格式化为<代码> MyRePrimeFieldNo/<代码>,删除需要复制的全部。

    < P>因为您使用的是<强> C方法< /强>(我假设<代码> MyRePrimeFieldNo> <代码>是原始的C<代码> WCARYTT < /COD>数组),您可能需要考虑<强> >代码> SWPROTFFSH()。直接:

    #include <stdio.h>  // for swprintf_s, wprintf
    
    int main()
    {
        int myIntValue = 20;
        wchar_t m_reportFileName[256];
    
        swprintf_s(m_reportFileName, L"%d", myIntValue);
    
        wprintf(L"%s\n", m_reportFileName);
    }
    
    #包括//swprintf,wprintf
    int main()
    {
    int-myIntValue=20;
    wchar_t m_reportFileName[256];
    swprintf_s(m_reportFileName,L“%d”,myIntValue);
    wprintf(L“%s\n”,m_reportFileName);
    }
    
    <>在更现代的<强> C++方法中,可以考虑使用<代码> STD::WScGe>代码>代替原始代码> WCARGETT < /C>数组和转换。< /P> < P> >代码> C++ 11 :

    wstring value = to_wstring(100);
    
    wostringstream wss;
    wss << 100;
    wstring value = wss.str();
    
    C++11之前的代码:

    wstring value = to_wstring(100);
    
    wostringstream wss;
    wss << 100;
    wstring value = wss.str();
    
    wostringstreamwss;
    
    wss正常类型转换?但请记住,“最后一个”字符必须为零,否则将进入未定义行为的区域。这意味着您的
    int
    只能存储一个字符(
    int
    在Windows上是32位,而
    wchar\u t
    是16位);你说的“转换”是什么意思?请举个例子,使用<代码> STD:WSCORING/<代码>使用WordSturns来捕获<代码> int <代码> .@ HMJD或使用第二个参数,而不是代码“SWINPtffss<代码>应该是缓冲区的大小吗?@ C++中的CinCout,由于模板技巧,编译器能够从第一个缓冲区参数自动推断出缓冲区大小。@c显然,在询问此问题之前,您没有考虑过使用编译器来尝试它吗。它失败了。显然,当您试图获取指向缓冲区的指针的大小(而不是缓冲区的大小)时,出现编译器错误是件好事。