Как отправить переменные данные в omnet ++? - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь отправить переменные данные в omnet ++, но он может отправлять только постоянные данные.

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

Например, как я могу реализовать следующий код?

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

Ответы [ 3 ]

2 голосов
/ 06 апреля 2020

Использование имени сообщения для переноса данных не очень хорошая идея.
Лучший способ - определить собственное сообщение с необходимыми полями. Например, таким образом:

  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");
    
0 голосов
/ 05 апреля 2020

Вам просто нужно преобразовать тип int в строковый тип и получить C строку из строки C ++.

int data{};
cMessage *msg=new cMessage(std::to_string(data).c_str());
0 голосов
/ 05 апреля 2020

Поскольку данные являются целыми числами, все, что необходимо, - это преобразовать их в строку. Самый простой способ сделать это в C ++ - это использовать std::stringstream:

std::stringstream ss;
ss << data;

Теперь ss.str().c_str() имеет тип const char *, что принимается в конструкторе cMessage.

...