如何在 omnet++ 中发送可变数据?

How to send a variable data in the omnet++?

我试图在 omnet++ 中发送可变数据,但它只能发送常量数据。

cMessage *msg=new cMessage(const char *s);

例如,我该如何实现下面的代码?

data++;
cMessage *msg=new cMessage(""+data);
send(msg, "out");

由于数据是整数,所以只需将其转换为字符串即可。在 C++ 中执行此操作的最简单方法是使用 std::stringstream:

std::stringstream ss;
ss << data;

现在 ss.str().c_str()const char * 类型,它在 cMessage 的构造函数中被接受。

你只需要将int类型转换成string类型,然后从C++字符串中获取C字符串即可。

int data{};
cMessage *msg=new cMessage(std::to_string(data).c_str());

使用消息的名称来携带数据不是一个好主意。
更好的方法是使用必填字段 define own message。例如这样:

  1. 创建一个新的消息文件(例如DataMessage.msg),内容为:

    message DataMessage {
        int data;  
        // here one can add other fields
    }
    
  2. 在您的 C++ 代码中添加:

    #include "DataMessage_m.h"
    
  3. 要创建、设置字段并发送新消息,请使用此示例代码:

    DataMessage *msg = new DataMessage("DataMsg");
    msg->setData(data);
    send(msg, "out");