在 C++ 中将 long 转换为 CString

Posted

技术标签:

【中文标题】在 C++ 中将 long 转换为 CString【英文标题】:Convert long to a CString in C++ 【发布时间】: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? 我喜欢它,因为它提供了很多选择。仍然缺少的是不同场景(在合理范围内)的首选方式。鲁棒性、安全性等...

【问题讨论】:

【参考方案1】:

试试这个:

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

【讨论】:

谢谢。什么是'cs'?它来自哪里? 认为应该是 cstr.Format("%ld",long); @robert,为了更清楚,我更新了问题 1(请解释为什么一种方法优于其他方法)。 你想要一个 CString 结果。因此,使用 CString::Format 函数在 (1) 清晰度/可读性方面具有优势,并且 (2) 您不必像为 _ltow_s 所做的那样创建缓冲区。 这不是一个完整的答案,但它是迄今为止唯一的答案。我会接受的……

以上是关于在 C++ 中将 long 转换为 CString的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将字符串转换为 Cstring

如何将 long 转换为 LPCWSTR?

如何在Java中将String转换为long?

在CUDA中将类型转换为unsigned long long?

在c#中将字符串转换为long时的问题

如何在java中将十六进制字符串转换为long?