【问题标题】:C++ error C2040: 'ip' : 'const char *' differs in levels of indirection from 'std::string'?C++ 错误 C2040:“ip”:“const char *”与“std::string”的间接级别不同?
【发布时间】:2014-07-28 10:37:19
【问题描述】:

我已经搞了好几个小时了,我只是想不通,有人可以帮我吗?

cout << "Please enter the port to listen on: ";
int port = 2232;
cin >> port;
cout << "Please enter your ip address: ";
string addr;
cin >> addr; //ERROR 1
puts("");
WSAData wsa;
WORD Version = MAKEWORD(2,1);
WSAStartup(Version, &wsa);
SOCKET Listen = socket(AF_INET, SOCK_STREAM, NULL);
SOCKET Connect = socket(AF_INET, SOCK_STREAM, NULL);
SOCKADDR_IN Server;
Server.sin_addr.s_addr = inet_addr(addr); //ERROR 2

1 错误 C2040:“ip”:“const char *”与“std::string”的间接级别不同

2 IntelliSense:不存在从“std::string”到“const char *”的合适转换函数

【问题讨论】:

  • 您是否包含 标头?

标签: c++ char ip constants


【解决方案1】:

这是因为inet_addr 接受const char*,而您传递的是std::string。调用c_str()进行转换,如下所示:

Server.sin_addr.s_addr = inet_addr(addr.c_str());

第二条错误消息只是告诉您标准库没有办法隐式执行此转换。

【讨论】:

  • 解决了第二个错误,但第一个仍然有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 2015-06-22
  • 2021-12-28
相关资源
最近更新 更多