我像往常一样定义了我的char,虽然我把它命名了buf.我一直收到错误:
'char'类型的参数与'void*'类型的参数不兼容
如果我设置buf为void*,它将无法传入4096作为参数.
那么,我该如何解决这个问题呢?有没有人遇到这样的问题?
char buf{4096};
string userinput;
do
{
cout << "> " << endl;
getline(cin, userinput);
if (userinput.size() > 0) // make sure the user typed something in
{
int SendResult = send(sock, userinput.c_str, userinput.size() + 1, 0);
if (SendResult != SOCKET_ERROR)
{
ZeroMemory(buf, 4096);
int bytesReceived = recv(sock, buf, 4096, 0);
if (bytesReceived > 0)
{
cout << "SERVER" << string(buf, 0, bytesReceived) <<
endl;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题很可能是这个定义:
char buf{4096};
Run Code Online (Sandbox Code Playgroud)
这大致相当于:
char buf = 4096;
Run Code Online (Sandbox Code Playgroud)
哪个是单个字符,而不是字符数组缓冲区.解决这个问题:
char buf[4096];
Run Code Online (Sandbox Code Playgroud)
通过时,您可能需要这样做:
ZeroMemory(&buf, 4096);
Run Code Online (Sandbox Code Playgroud)
我强烈建议你避免在任何地方敲击4096,所以定义一个常数:
const SIZE_T buf_size = 4096;
char buf[buf_size];
// ...
ZeroMemory(&buf, buf_size);
Run Code Online (Sandbox Code Playgroud)