【发布时间】:2021-05-12 04:24:16
【问题描述】:
我有一个函数:
BOOL ReadWebPage(CONST TCHAR *sURL, TCHAR *sDataRead)
{
BOOL rv = FALSE
TCHAR *sFile = new TCHAR[1024]();
StringCchCopy(sFile, 1024, L"c:\\temp\\file.txt");
res = URLDownloadToFileW(NULL, sURL, sFile, 0, NULL);
if (res != S_OK)
StringCchCopy(sDataRead, 16, L"Error");
else {
StringCchCopy(sDataRead, 16, L"File exists on remote server");
rv = TRUE; }
delete[] sFile;
return rv;
}
如果是*sDataRead,那么调用行会这样调用这个函数:
ReadWebPage(L"http://www.example.com/test.txt", sTest);
如果是**sDataRead,那么调用行会这样调用这个函数:
ReadWebPage(L"https://www.example.com/test.txt", &sTest);
我的问题是,我应该在函数中为ReadWebPage 原样声明*sDataRead,还是将其声明为**sDataRead 更有效,还是没有任何区别?
【问题讨论】:
-
如果你想从一个函数中返回一些东西,返回它通常是最好的方法。
-
BOOL ReadWebPage(CONST TCHAR *sURL, std::basic_string<TCHAR>& sDataRead)怎么样? -
@Someprogrammerdude 仍然没有从这个函数返回字符串。
-
即使
URLDownloadToFileW调用成功,也不要忘记实际复制到sDataRead。并且可能在错误时返回FALSE? -
我不想返回字符串,我想要函数的参数中的返回字符串。
标签: c++ parameter-passing wchar-t