【发布时间】:2016-03-16 11:13:24
【问题描述】:
我有这段代码:
const char * c = &(4:); //This pointer contains "JPG" string
//Wide char conversion
wchar_t *cc = new wchar_t[128];
MultiByteToWideChar(CP_ACP, 0, c, -1, cc, wcslen(cc));
然后我声明一个 wstring 变量:
wstring sFilter;
sFilter.append(L"Format: ");
sFilter.append(cc);
sFilter.push_back('\0');
sFilter.append(L"*.");
sFilter.append(cc);
sFilter.push_back('\0');
sFilter.push_back('\0');
const wchar_t * extensionFilter = sFilter.c_str();
我正在形成这个 wchar_t 以将过滤器应用于 WinApi 中的 GetOpenFileName 函数:ofn.lpstrFilter = extensionString; 这是结构的成员。
扩展过滤器随机包含:“3ormat:JPG”或“:ormat:JPG”...
我无法将项目更改为 Unicode,因为我正在使用的 IDE 不允许这样做。所以我需要使用它。
【问题讨论】:
-
&(4:)应该是什么?那不是有效的代码。 -
这不是 C++ 标准的有效代码,我正在开发一个以这种方式传递参数的 IDE (CA Plex)。 IDE 解释
&(4:)并将其替换为有效值。
标签: c++ unicode std wstring wchar