C++ 错误 C2040 : 'ip' : 'const char *' differs in levels of indirection from 'std::string' ?

标签 c++ char ip constants

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

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/

相关文章:

javascript - 如何从IP地址判断向量是否为公司?

python - python中ipv4子网掩码点分二进制的函数生成

c++ - 为什么转换构造函数优于转换运算符?

android - 调试使用 vs-android 构建的 Android 原生应用程序

c# - 字符洗牌器

c - 反转字符串变量,或反转打印字符数组

powershell - 在 Powershell 中使用 nslookup 获取主机名的 IP 地址

c++ - 在以下情况下手动调用析构函数是否是一个糟糕的设计决策?

C++如何初始化堆中的对象数组

c - 将循环中的值分配给字符指针数组