C++ StringCchCat,用于在VC+中连接整数和字符串+;

C++ StringCchCat,用于在VC+中连接整数和字符串+;,c++,visual-c++,string-concatenation,strcat,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++中实现这一点? 代码的快速修复: TCHAR dest[MAX_PATH]; int i

我想将整数与字符串连接起来,如下所示:

我的代码片段是这样的

TCHAR dest[MAX_PATH];
int i = 2;
StringCchCopy(dest,MAX_PATH,"Begining_");
StringCchCat(dest,MAX_PATH,LPCTSTR(i));
最后一行导致异常。我知道最后一行错了。
“Begining”&连接的字符串应该是“Begining_2”。如何在C++中实现这一点?

代码的快速修复:

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);
int i = 2;
std::wstring dest(L"Begining_");
dest += std::to_wstring(i);
LPCWSTR str = dest.c_str();
CString
没有
(LPCTSTR)
cast运算符。因此,您可以在任何接受
LPCTSTR
类型参数的函数中直接使用它

<强>标准C++方式(Unicode兼容):>P/>

int i = 2;
CString sDest;
sDest.Format(_T("Begining_%d"), i);
int i = 2;
std::wstring dest(L"Begining_");
dest += std::to_wstring(i);
LPCWSTR str = dest.c_str();
试试这个代码

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

什么是STRSAFE\u LPCTSTR。StringCchCat的语法需要LPCTSTRY您需要首先将i转换为字符串。