我想用字符串连接整数:
我的代码段就是这样。
TCHAR dest[MAX_PATH];
int i = 2;
StringCchCopy(dest,MAX_PATH,"Begining_");
StringCchCat(dest,MAX_PATH,LPCTSTR(i));
最后一行导致异常。我知道最后一行是错的。 " Begining" &安培;连接的字符串应该是" Begining_2"。我如何在C ++中实现这一目标?
答案 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