新手指针

时间:2010-11-08 06:22:12

标签: c++

我需要将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假设要写一些文本文件。看来,覆盖文件没有任何字符串..我不知道为什么:(

4 个答案:

答案 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 (...)函数。

相关问题