我有一个函数将两个LPCWSTRs连接在一起,方法是将它们转换为wstrings,添加它们,将其转换回来,然后返回该值(取自:How to concatenate a LPCWSTR?)
LPCWSTR addLPCWSTRs(LPCWSTR lpcwstr1, LPCWSTR lpcwstr2) {
//Add the strings together
std::wstring wstringCombined = std::wstring(lpcwstr1) + std::wstring(lpcwstr2);
//Convert from wstring back to LPCWSTR
LPCWSTR lpcwstrCombined = wstringCombined.c_str();
return lpcwstrCombined;
}
LPCWSTR BaseURL = L"https://serpapi.com/search.json?tbm=isch?q=";
LPCWSTR imageQuery = L"baby+animals";
LPCWSTR URL = addLPCWSTRs(BaseURL, imageQuery);
Run Code Online (Sandbox Code Playgroud)
在 return 语句之前,lpcwstrCombined值是正确的,当我在 return 语句之前中断时,调试器显示值也是正确的。
正确的值应该是:
当我在结尾的花括号处中断时,该值lpcwstr会在1-5来自其他语言的随机符号之前变成一堆正方形,并且它总是在变化。
例子:
这不需要更改任何代码,只需重置调试器并再次运行即可。我已经对此进行了数小时的研究,到目前为止还没有发现任何东西。数组的一个有点类似的问题据说使用指针而不是面值,但这并没有什么区别。为什么变量一返回就在函数外改变值??
编辑: 阅读评论后,我将其更改为:
std::wstring addLPCWSTRs(LPCWSTR lpcwstr1, LPCWSTR lpcwstr2) {
//Add the strings together …Run Code Online (Sandbox Code Playgroud) 通过一些简单的 JavaScript,我如何检测客户端用户是否正在使用 Adblocker?