如何从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]'
谢谢。
答案 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()
传递给方法。
只有一种方法可以给猫皮肤挑选最适合你的刀。