2010-11-08 3 views
0

Je dois mettre la valeur cs à l'intérieur du support pour l'objet client. Je l'ai déjà gérer la variable cs comme ceci:Débutant aux pointeurs

CString cs (bar_->GetHostName()); 

Mais encore ne parviennent pas à mettre la valeur à l'intérieur ce ci-dessous le code:

WinHttpClient client(/* dont know what value to put here */); 
client.SendHttpRequest(); 

Message d'erreur:

Error 1 error C2664: 'WinHttpClient::WinHttpClient(const std::wstring &)' : cannot convert parameter 1 from 'const char [15]' to 'const std::wstring &' c:\test.cpp 

modifier:

CString cs (bar_->GetHostName()); 
    WinHttpClient client(/*??*/); 
    client.SendHttpRequest(); 
    wstring httpResponseHeader = client.GetHttpResponseHeader(); 
    wstring httpResponse = client.GetHttpResponse(); 
    writeToStorage(httpResponse.c_str()); 

Ma fonction writeToStorage suppose d'écrire quelque chose dans un fichier texte. Il semble, en écrasant le fichier sans chaînes dans ce .. Je ne sais pas pourquoi :(

Répondre

1

On dirait que vous utilisez CString MFC et vous voulez passer cs au WinHttpClient.

Voici comment vous le faites:

CString cs (bar_->GetHostName()); 
std::string s((LPCTSTR)cs); 
WinHttpClient client(s); 
client.SendHttpRequest(); 

Si WinHttpClient a un constructeur surchargé qui accepte wchar *, vous pouvez le faire comme ceci:

CString cs (bar_->GetHostName()); 
WinHttpClient client(cs); 
client.SendHttpRequest(); 

Cependant, si vous voulez passez le texte brut comme mentionné dans d'autres réponses, puis faites ceci:

WinHttpClient client(_T("Text")); 
client.SendHttpRequest(); 

En Visual C++, en utilisant _T est une meilleure option que d'utiliser L

0

Ecrire WinHttpClient client(L"text"); au lieu de WinHttpClient client("text");

-1

Abyx a raison: vous devez écrire L avant la chaîne, mais cela ne fonctionne qu'avec des chaînes constantes, L est une macro qui convertit char [] en wchar_t [] - Unicode char array Pour la conversion dynamique, vous devez utiliser MultiByteToWideChar (...) fonction

+2

"L" n'est pas une macro, c'est une partie de la chaîne littérale. – Abyx

Questions connexes