StringCchCat用于在VC ++中将整数与字符串连接起来

时间:2015-04-16 10:39:43

标签: c++ visual-c++ string-concatenation strcat

我想用字符串连接整数:

我的代码段就是这样。

TCHAR dest[MAX_PATH];
int i = 2;
StringCchCopy(dest,MAX_PATH,"Begining_");
StringCchCat(dest,MAX_PATH,LPCTSTR(i));

最后一行导致异常。我知道最后一行是错的。 " Begining" &安培;连接的字符串应该是" Begining_2"。我如何在C ++中实现这一目标?

2 个答案:

答案 0 :(得分:1)

代码的快速修复:

TCHAR dest[MAX_PATH];
int i = 2;
_stprintf_s(dest, MAX_PATH, _T("Begining_%d"), i);

正如您所看到的,我已将其简化并使其更安全。因此,无需使用StringCchCopy / StringCchCat函数。

请注意,你这样做的方式是纯C,在Windows平台上的C ++中应该这样做:

使用MFC框架(符合UNICODE):

int i = 2;
CString sDest;
sDest.Format(_T("Begining_%d"), i);

CString确实有(LPCTSTR)强制转换操作符。因此,您可以在任何接受LPCTSTR类型参数的函数中直接使用它。

标准C ++方式(符合UNICODE):

int i = 2;
std::wstring dest(L"Begining_");
dest += std::to_wstring(i);
LPCWSTR str = dest.c_str();

答案 1 :(得分:1)

试试此代码

int i = 2;
std::wstring ext = std::to_wstring(i);  // convert integer to wstring
StringCchCat(dest, MAX_PATH, ext.c_str()); // pass wstring here