我想替换特定字符wchar_t。结果它返回内存地址。有没有办法返回替换的wchar_t?
PFQuery *query = [PFQuery queryWithClassName:@"Likes"];
[query whereKey:@"user" isEqualTo:self.user];
[query includeKey:@"post"];
[query includeKey:@"post.owner"];
谢谢
答案 0 :(得分:1)
我建议您使用std :: wstring,然后使用.replace,这并不是一个很好的“替换”#39;使用c-strings时的函数:
Point
答案 1 :(得分:0)
使用GetModuleFileNameEx
Windows XP及更高版本。或者QueryFullProcessImageName
用于Vista及更高版本。
否则,您无法假定"\\Device\\HardiskVolume1"
始终为"C:"
另见SO Q& A:Convert HarddiskVolume path to normal path
首先将"\Device"
更改为"\\?"
:
`"\\Device\\HardiskVolume1\\path.exe"` //to
`"\\\\?\\HardiskVolume1\\path.exe"`
wchar_t buf[MAX_PATH];
wchar_t *ptr = wcsstr(processPath, L"\\Device");
if(ptr)
{
wcscpy_s(buf, L"\\\\?");
wcscat_s(buf, ptr + wcslen(L"\\Device"));
}
现在您可以在buf
中打开CreateFile
,然后使用GetFinalPathNameByHandle
获取
`"\\\\?\\C:\\path.exe"`
请注意,如果找不到搜索字符串,wcsstr
将返回NULL
。如果找到搜索字符串并且复制成功,则最终会以您完成此操作的方式覆盖processPath
。此外,wcscpy_s
是wcscpy
的安全版本。如果您不想正确使用wcscpy_s
,请使用wcscpy
而不使用100
之类的随机数作为参数。