如何在const wchar_t *参数中进行连接?

时间:2017-09-20 16:10:58

标签: c++ string gdi+

在这种情况下,如何在 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

1 个答案:

答案 0 :(得分:3)

原始C风格的字符串指针(如const wchar_t*)不能使用operator+与字符串语义连接在一起。但是,您可以连接 C ++字符串类的实例,例如ATL CStringstd::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);