2010-11-08 38 views
0

我需要将cs值放在对象client的括号内。我已经处理cs变量是这样的:新手指针

CString cs (bar_->GetHostName()); 

但还是不能把里面的值下面这样的代码:

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

错误消息:

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

编辑:

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

我的功能writeToStorage假设将某些东西写入文本文件。看来,覆盖在它没有字符串的文件。我不知道为什么:(

回答

1

看起来您正在使用MFC的CString,并且您想将cs传递给WinHttpClient

这里是你如何做到这一点:

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

如果WinHttpClient有一个重载的构造函数接受WCHAR *,那么你可以做这样的:

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

但是,如果你想如其他答案中所述,请传递纯文本,然后执行以下操作:

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

在Visual C++中,使用_T是比使用更好的选项L

0

WinHttpClient client(L"text");,而不是WinHttpClient client("text");

-1

Abyx是对的你应该在字符串之前写L,但它只能用于常量字符串L是一个将char []转换为wchar_t []的宏 - 对于动态转换,您必须使用MultiByteToWideChar (...)函数

+2

“L”不是宏,它是宽字符串文字的一部分。 – Abyx 2010-11-08 07:18:42