如何在 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。例如这样:
创建一个新的消息文件(例如DataMessage.msg
),内容为:
message DataMessage {
int data;
// here one can add other fields
}
在您的 C++ 代码中添加:
#include "DataMessage_m.h"
要创建、设置字段并发送新消息,请使用此示例代码:
DataMessage *msg = new DataMessage("DataMsg");
msg->setData(data);
send(msg, "out");
我试图在 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。例如这样:
创建一个新的消息文件(例如
DataMessage.msg
),内容为:message DataMessage { int data; // here one can add other fields }
在您的 C++ 代码中添加:
#include "DataMessage_m.h"
要创建、设置字段并发送新消息,请使用此示例代码:
DataMessage *msg = new DataMessage("DataMsg"); msg->setData(data); send(msg, "out");