2009-12-05 1 views
-1

Мне нужно сделать сообщение, согласовав различные части. Поэтому я использовал ostringstream. Теперь у меня есть std :: string или const * char для отправки по mailslot. Я пробовал много способов сделать это, но каждый раз, когда я получаю неправильные сообщения. Я хотел бы знать решение для отправки сообщений по mailslot и получать его и показывать его с помощью консоли.Mailslot с строкой

Мой код для создания и отправки почты является:

std::ostringstream oss; 
    oss << "RE" << "01" << "01:01:02.350" << "REMOTA 01 - MSG DESCARTADA"; 
    std::string alarm = oss.str(); 

    const char *a = alarm.c_str(); 
ASSERT(WriteFile(hMailslot, &a, strlen(a), &dwBytesSent, NULL), 

"Невозможно отправленное сообщение.");

и получить сообщение является:

char alarm[42]; 
      DWORD bytesRead; 
      ASSERT(ReadFile(hMailslot, &alarm, strlen(alarm), &bytesRead, NULL), 
       "Impossible to read file. ERROR: " << GetLastError()); 

Я хотел бы использовать зЬй :: COUT или Printf прочитать эту mensage.

С уважением, Леандро Лима

+1

Вы забыли точку с запятой ';' в строке 42 вашего кода – pmg

+0

Что вы сделали до сих пор? Какие сообщения об ошибках вы получаете? Покажите нам код, который генерирует ошибки. Мы не будем писать его для вас с нуля, это не rentacoder !! – Glen

+1

Небезопасно хранить результат 'c_str()' как это. – GManNickG

ответ

1

Сохранение результата c_str() является безопасным, поскольку строковые объекты не изменяются, но это не относится к делу. Проблема в том, что вы передаете адрес указателя на строку вместо простого указателя на строку. Изменить & a и & сигнализация только для а и сигнализации.