【问题标题】:Convert long to a CString in C++在 C++ 中将 long 转换为 CString
【发布时间】:2014-10-30 18:45:47
【问题描述】:

我正在使用 Visual Studio 2008 IDE 使用 C++。我需要将 long 转换为 CString(或其他可以很好地与 CString 配合使用的格式)。转换完成后,我需要将其连接到另一个 CString。像这样的东西(但欢迎提出建议):

CString = CString + convertToCString(long)

问题 1:什么是最佳方式(请解释为什么一种方法优于其他方法)?

目前,我正在使用 _ltow_s

CString = CString + _ltow_s (long)

_ltow_s 正在返回 WCHAR。所以我最终得到:

CString = CString + WCHAR

问题 2:这种连接是否安全并且会产生预期的结果? 'CString + WCHAR' 结果的串联是否带有有效的 CString?

问题 3: 如果我们正在使用 _ltow_s,那么需要分配的缓冲区大小是多少? 32?另外,是否有以 10 为底的定义(十进制)?

更新: 我找到了这个帖子:How to cast a LONG to a CString? 我喜欢它,因为它提供了很多选择。仍然缺少的是不同场景(在合理范围内)的首选方式。鲁棒性、安全性等...

【问题讨论】:

    标签: c++ visual-studio-2008 type-conversion long-integer cstring


    【解决方案1】:

    试试这个:

    CString cstr;
    cstr.Format("%ld", long);
    

    【讨论】:

    • 谢谢。什么是'cs'?它来自哪里?
    • 认为应该是 cstr.Format("%ld",long);
    • @robert,为了更清楚,我更新了问题 1(请解释为什么一种方法优于其他方法)。
    • 你想要一个 CString 结果。因此,使用 CString::Format 函数在 (1) 清晰度/可读性方面具有优势,并且 (2) 您不必像为 _ltow_s 所做的那样创建缓冲区。
    • 这不是一个完整的答案,但它是迄今为止唯一的答案。我会接受的……
    猜你喜欢
    • 2015-08-23
    • 2011-11-23
    • 2020-06-12
    • 2012-11-07
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    相关资源
    最近更新 更多