2009-12-05 61 views
-1

我需要將各種部分的信息拼接起來。所以我使用ostringstream。現在我有一個std :: string或一個const * char通過郵筒發送。 我嘗試了很多方法來做到這一點,但每次我收到錯誤的消息。 我想知道一個解決方案,通過郵槽發送郵件並接收它並通過控制檯顯示它。帶字符串的郵筒

我的代碼生成和發送郵件是:

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()); 

我想用一個std ::法院或一個printf閱讀本mensage。

問候, 萊昂德羅利馬

+1

您忘記了代碼第42行的分號';' – pmg 2009-12-05 14:47:23

+0

到目前爲止您做了什麼?你收到什麼錯誤信息?向我們展示生成錯誤的代碼。我們不會從頭開始爲你寫,這不是rentacoder! – Glen 2009-12-05 15:24:30

+1

像這樣存儲'c_str()'的結果是不安全的。 – GManNickG 2009-12-05 19:11:56

回答

1

存儲c_str的結果()是安全的,只要該字符串對象沒有被修改,但是這不是重點。問題是你將指針的地址傳遞給一個字符串,而不是簡單的指向字符串的指針。更改& a和&報警只是一個警報。