c++中一句话不理解.

std::string data = "username=15111651349&password=qq1990086708&client=wap";

const void *ss = (const char *)data.c_str();

bResults = WinHttpSendRequest(hRequest, 0, 0, const_cast<void *>(ss), data.length(),
data.length(), 0);

const_cast<void *>(ss) 这句话看不懂

clipboard.png

阅读 3.2k
4 个回答

:const_cast<type_id> (expression)
该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。
一、常量指针被转化成非常量的指针,并且仍然指向原来的对象;
二、常量引用被转换成非常量的引用,并且仍然指向原来的对象;
三、const_cast一般用于修改底指针。如const char *p形式。

这执行了一个你若不知道自己在干什么就会很危险的操作,这个关键字可以移除变量的const限定符

这是强制类型转换操作,把ss转换成void *类型。
参考这里

因为c_str()返回的是const char *,后面想传递给一个不要const的函数,相当于C语言的强转(void *)。
只不过他写成了两步,先转成const void *,再去掉const修饰。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题