在这种情况下,如何在 const wchar_t*
参数中进行连接?
我正在尝试制作使用以下名称自动保存的屏幕截图:
screen-1.jpg
screen-2.jpg
screen-3.jpg
...
screen-i.jpg`
代码:
p_bmp->Save(L"C:/Users/PCUSER/AppData/screen-" + filenumber + ".jpg", &pngClsid, NULL);
//filenumber is ant int that increases automatically
但它给了我一个错误:
expression must have integral or unscoped
答案 0 :(得分:3)
原始C风格的字符串指针(如const wchar_t*
)不能使用operator+
与字符串语义连接在一起。但是,您可以连接 C ++字符串类的实例,例如ATL CString
或std::wstring
,仅举几例。
由于您还要连接整数值,您可以先将这些值转换为字符串对象(例如使用std::to_wstring()
),然后使用重载的operator
+来连接各种各样的字符串。
#include <string> // for std::wstring and to_wstring()
...
// Build the file name string using the std::wstring class
std::wstring filename = L"C:/Users/PCUSER/AppData/screen-";
filename += std::to_wstring(filenumber); // from integer to wstring
filename += L".jpg";
p_bmp->Save(filename.c_str(), // convert from wstring to const wchar_t*
&pngClsid,
NULL);
如果使用ATL CString
类,您可以遵循的另一种方法是以类似于printf()
的方式格式化结果字符串,调用CString::Format()
方法,例如:
CStringW filename;
filename.Format(L"C:/Users/PCUSER/AppData/screen-%d.jpg", filenumber);
p_bmp->Save(filename, // implicit conversion from CStringW to const wchar_t*
&pngClsid,
NULL);