函数范围内的转义字符串



是否可以在函数范围内转义参数传递的字符串?

我的意思是不是:

HWND WinExist(std::wstring WinClass, std::wstring WinTitle)
{
HWND hWnd = FindWindowEx(0, 0, WinClass.c_str(), WinTitle.c_str());
if (int err = GetLastError()) GetLastErrorAsString(err, __func__);
return hWnd;
}
HWND hWnd = WinExist(L"", LR"(a string that need to be escaped)");

类似于:

HWND WinExist(std::wstring WinClass, std::wstring WinTitle)
{
// -- escape the string --
HWND hWnd = FindWindowEx(0, 0, WinClass.c_str(), WinTitle.c_str());
if (int err = GetLastError()) GetLastErrorAsString(err, __func__);
return hWnd;
}
HWND hWnd = WinExist(L"", L"a string that need to be escaped");

否。至少,不是你想要的方式。

字符串转义序列由编译器在处理字符串文本时进行处理。它们是将源代码转换为程序的一部分。也就是说,它将字符串文字"n"转换为字节序列{0x0A, 0x00}。这意味着它以后不能在运行时应用于字符串变量。太晚了。

现在,你可以做一个反向映射。即将字节序列{0x0A 0x00}转换为{0x5C, 0x6C, 0x00},但我不会称之为转义;它只是应用了一个转换。


请注意,还有其他类型的转义可以应用于字符串变量(即字符串中具有特殊含义的转义字符,稍后将被解释为SQL查询(,但这些不适用于此处。它们获取一个字节序列,并将其转换为不同的字节序列。它们在运行时应用。

最新更新