C++ 新手到指针

C++ 新手到指针,c++,C++,我需要将cs值放在对象客户机的括号内。我已经这样处理了cs变量: CString cs (bar_->GetHostName()); CString cs (bar_->GetHostName()); WinHttpClient client(cs); client.SendHttpRequest(); 但仍然无法将值放入以下代码中: WinHttpClient client(/* dont know what value to put here */); clien

我需要将
cs
值放在对象
客户机的括号内。我已经这样处理了
cs
变量:

CString cs (bar_->GetHostName());
CString cs (bar_->GetHostName());
WinHttpClient client(cs);   
client.SendHttpRequest();
但仍然无法将值放入以下代码中:

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
假设向文本文件写入内容。看起来,正在覆盖没有字符串的文件。。我不知道为什么:(

您需要提供
std::wstring


这个问题解释了转换:

WinHttpClient客户端(L“text”);
而不是
WinHttpClient客户端(“text”);
Abyx是正确的。您应该在字符串之前写L。但它只适用于常量字符串。L是一个将char[]转换为wchar\u t[]的宏-Unicode字符数组。要进行动态转换,您必须使用函数。

看起来您正在使用MFC的
CString
,并且希望将
cs
传递到
WinHttpClient

以下是您的操作方法:

CString cs (bar_->GetHostName());
std::string s((LPCTSTR)cs);
WinHttpClient client(s);   
client.SendHttpRequest();
如果WinHttpClient有一个接受wchar*的重载构造函数,那么您可以这样做:

CString cs (bar_->GetHostName());
CString cs (bar_->GetHostName());
WinHttpClient client(cs);   
client.SendHttpRequest();
但是,如果您想传递其他答案中提到的纯文本,请执行以下操作:

WinHttpClient client(_T("Text"));   
client.SendHttpRequest();
代码>比使用<代码> L>代码>

“L”不是一个宏,它是宽字符串文字的一部分。