我使用外部库来处理 2 个应用程序之间的 udp (OSC) 通信。为了格式化将要发送的消息,库需要一个 char* 但我从 UI 中得到一个必须转换的字符串。
当我处理代码的其他部分时,udp 部分是这样硬编码的:
char* endofMess = "from setEndMess";
Run Code Online (Sandbox Code Playgroud)
并且工作正常。我认为让它与我的字符串一起工作很容易并写道:
std::string s = "from setEndMess";
char* endofMess = const_cast<char*>(s.c_str());
Run Code Online (Sandbox Code Playgroud)
但与第一个例子不同的是,我收到的消息格式正确,现在我只收到乱码。有人知道它可能来自哪里吗?
谢谢!
马修
编辑:我使用的代码:每次 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() );
}
Run Code Online (Sandbox Code Playgroud)
如果我必须改变 OSC 模式,我称之为:
void osc500::setEndMess(String endpattern){
// endofMess = …Run Code Online (Sandbox Code Playgroud)