我需要将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
假设要写一些文本文件。看来,覆盖文件没有任何字符串..我不知道为什么:(
答案 0 :(得分:1)
您需要提供std::wstring
。
此问题解释了转化:How to convert CString and ::std::string ::std::wstring to each other?
答案 1 :(得分: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
答案 2 :(得分:0)
撰写WinHttpClient client(L"text");
代替WinHttpClient client("text");
答案 3 :(得分:-1)
Abyx是对的。你应该在字符串之前写L.但它只适用于常量字符串。 L是一个将char []转换为wchar_t [] - Unicode char数组的宏。对于动态转换,您必须使用MultiByteToWideChar (...)函数。