我已经做了好几个小时了,我就是想不通,有人可以帮我吗?
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 error C2040: 'ip' : 'const char *' 的间接级别与 'std::string' 不同
2 IntelliSense:不存在从“std::string”到“const char *”的合适转换函数
最佳答案
这是因为inet_addr
采用 const char*
,而您传递的是 std::string
。调用 c_str()
进行转换,如下所示:
Server.sin_addr.s_addr = inet_addr(addr.c_str());
第二条错误消息只是告诉您标准库没有办法隐式执行此转换。
关于C++ 错误 C2040 : 'ip' : 'const char *' differs in levels of indirection from 'std::string' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24993403/