#include "stdafx.h"#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <iostream>
#include <UrlMon.h>
#include <cstring>
#pragma comment(lib, "UrlMon.lib")
using namespace std;
int main()
{
char* appdata = getenv("APPDATA"); //Gets %Appdata% path
char* truepath = strcat(appdata, "\\USR\\file.dat"); // file location
cout << truepath ;
HRESULT hr = URLDownloadToFile(NULL, _T("http://localhost:8080/upload.php?name=Huh?" + truepath), _T("d"), 0, NULL);
cin.get();
return 0;
}
Это мой код выше, и я получаю сообщение об ошибке на этой линии:
HRESULT hr = URLDownloadToFile(NULL, _T("http://localhost:8080/upload.php?name=Huh?" + truepath), _T("d"), 0, NULL);
Ошибка компиляции, которую он мне дает, говорит о том, что «+ truepath» там невозможно использовать.
Я пробовал .c_str () и несколько других способов, но не могу заставить его работать. Любая помощь приветствуется.
// ANSI Build
std::string appdata( getenv("APPDATA") );
appdata += "\\USR\\file.dat";
std::string url( "http://localhost:8080/upload.php?name=Huh?" );
url += appdata;
URLDownloadToFile( NULL, url.c_str(), [...]
// UNICODE Build
std::wstring appdata( _wgetenv( L"APPDATA" ) );
appdata += L"\\USR\\file.dat";
std::wstring url( L"http://localhost:8080/upload.php?name=Huh?" );
url += appdata;
URLDownloadToFile( NULL, url.c_str(), [...]
Вы не можете добавить два указателя.
truepath
это указатель на символ
И когда ты говоришь "http://localhost:8080/upload.php?name=Huh?"
он возвращает указатель на char
, Итак, вы пытаетесь добавить два указателя, и вот что стандарт говорит об аддитивном операторе …
5.7
For addition, either both operands shall have arithmetic or unscoped enumeration
type, or one operand shall be a pointer to a completely-defined object
type and the other shall have integral or unscoped enumeration type.
Кроме того, вы должны выделить память для truepath
переменная, иначе он потерпит крах.