小编err*_*500的帖子

char * 和 const_cast<char*>(string.c_str()) 有什么区别

我使用外部库来处理 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)

c++ char osc const-cast

5
推荐指数
1
解决办法
6820
查看次数

标签 统计

c++ ×1

char ×1

const-cast ×1

osc ×1