const char to char问题

时间:2011-03-18 18:06:50

标签: c++

如何从char转换为const char?如何在不更改char SendBuf的情况下实现类型转换?这是我的代码:

的.cpp

// main()    
char SendBuf[6] = "Hello";
sendto(..., SendBuf, ...);

// sendto structure
int sendto(
__in  SOCKET s,
__in  const char *buf,
__in  int len,
__in  int flags,
__in  const struct sockaddr *to,
__in  int tolen
);

错误

Error   1   error C2440: '=' : cannot convert from 'const char [6]' to 'char [6]'

谢谢。

4 个答案:

答案 0 :(得分:4)

我没有微软的编译器来测试这个理论,但我怀疑OP的代码是这样的:

int main() {
    char SendBuf[6];
    SendBuf = "Hello";
    // sendto(..., SendBuf, ...);
}

我怀疑他看到的错误是cannot convert from 'const char [6]' to 'char [6]'分配上发生,而不是初始化和sendto调用。

使用Microsoft编译器检查的人是否可以编译上述程序并确认错误消息?

答案 1 :(得分:3)

写下这样的作业:

const char *SendBuf = "Hello";

您无需对函数调用执行任何操作。 (const char*参数将char*变量作为输入。)

答案 2 :(得分:2)

尝试

char SendBuf[6] = { "Hello" };

注意大括号,它告诉编译器你正在初始化一个聚合(在这种情况下是一个数组)。

然后,而不是

SendBuf = "Hello";

这显然是你的真实代码,请使用

strcpy(SendBuf, "Hello");

memcpy(SendBuf, "Hello", 6);

答案 3 :(得分:1)

有没有理由不能将字符串文字传递给方法? sendTo(...,"Hello",...);

如果是,那么为什么不简单地声明const char* SendBuf = "Hello";而不是使用char数组作为替代。

或者更好的是开始探索STL并使用std::string SendBuf("Hello");并将SendBuf.c_str()传递给方法。

只有一种方法可以给猫皮肤挑选最适合你的刀。