【问题标题】:How can I convert an Int to a CString?如何将 Int 转换为 CString?
【发布时间】:2012-09-18 03:01:30
【问题描述】:

我可以使用_ecvtDouble 转换为CString

result_str=_ecvt(int,15,&decimal,&sign);

那么,有没有像上面那样将int 转换为CString 的方法?

【问题讨论】:

  • 注意:cstring 标签用于标准 C++ 标头 cstring,不适用于 Microsoft 的字符串。
  • 也许itoa 是您要找的?

标签: c++ visual-c++ mfc


【解决方案1】:

这是一种方法:

CString str;
str.Format("%d", 5);

在你的情况下,尝试_T("%d")L"%d" 而不是"%d"

【讨论】:

  • 不能比这更快。您可能想用_T 宏包装字符串以匹配LPCTSTR 参数类型。
  • @Eslam 它具体是如何不起作用的?没有编译?运行时错误?结果错误?
  • @Daniel,出现以下错误 错误 C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [3]' 到 'const wchar_t *'
  • @Eslam 试试_T("%d")L"%d" 而不是"%d"
【解决方案2】:

如果您想要更类似于您的示例的内容,请尝试 _itot_s。在 Microsoft 编译器上,_itot_s 指向 _itoa_s 或 _itow_s,具体取决于您的 Unicode 设置:

CString str;
_itot_s( 15, str.GetBufferSetLength( 40 ), 40, 10 );
str.ReleaseBuffer();

它应该稍微快一些,因为它不需要解析输入格式。

【讨论】:

    【解决方案3】:
    template <typename Type>
    CString ToCString (Type value)
        {
        return std::to_wstring (value).data ();
        }
    
    int main ()
        {
        const auto msg = ToCString (10);
        std::wcout << msg.GetString () << std::endl;
    
        return 0;
        }
    

    【讨论】:

      猜你喜欢
      • 2015-05-23
      • 1970-01-01
      • 2023-04-01
      • 2011-11-23
      • 2012-03-07
      • 2011-07-29
      • 2014-11-27
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多