我将使用外部库来处理两个应用程序之间的UDP(OSC)通信,这与IT技术有关。为了格式化将要发送的消息,该库需要一个char*,但我从UI获得一个字符串必须进行转换。
在处理我的代码的其他部分时,udp部分是硬编码的,例如:
如果我需要更改OSC模式,我会调用这个:
在处理我的代码的其他部分时,udp部分是硬编码的,例如:
char* endofMess = "from setEndMess";
一直以来它都很好用。我认为很容易通过我的字符串让它工作,并写下了:
std::string s = "from setEndMess";
char* endofMess = const_cast<char*>(s.c_str());
但是,与我第一个示例不同的是,我接收到的信息格式正确,但现在我只收到了无意义的字符。有人知道这可能是从哪里来的吗?
谢谢!
Matthieu
编辑:我使用的代码: 每次 OSCVal 改变时发送消息的方法:
void osc500::testOSC(int identifier, float OSCval)
{
UdpTransmitSocket transmitSocket( IpEndpointName( destIP, port ) );
char buffer[1024];
osc::OutboundPacketStream p( buffer, 1024 );
p << osc::BeginBundleImmediate
<< osc::BeginMessage( endofMess )
<< OSCval << osc::EndMessage
<< osc::EndBundle;
transmitSocket.Send( p.Data(), p.Size() );
}
如果我需要更改OSC模式,我会调用这个:
void osc500::setEndMess(String endpattern){
// endofMess = "from setEndMess"; //OK works fine each time it's called
//1st try :
//std::string s = "from setEndMess";
//endofMess = const_cast<char*>(s.c_str()); //gibberish
//2nd try :
//std::string s = "from setEndMess";
//endofMess = &s[0]; //gibberish
//3rd & 4th tries :
//char s[4] = {'t','e','s','t'};
//char s[5] = {'t','e','s','t','\0'};
//endofMess = s; //gibberish
}
char*
中,还是将其传递给网络函数以便在网络上传输。 - Mat