我有一個奇怪的問題,我無法修復。我從微控制器通過TCP發送3個浮點值。在我的PC上,我只是想打印這些值。當我在釋放模式下運行代碼時,它只打印小數點前面的數字。但是當我調試程序時,一切正常。爲什麼程序打印在調試和發佈時浮動不同?
這是代碼:
char laserL_Buffer[32];
char laserR_Buffer[32];
char laserM_Buffer[32];
TCPConnector* connector = new TCPConnector();
TCPStream* stream = connector->connect("10.42.0.2",3333);
//Send l for laserData
char cT = 'l';
stream->send(&cT,1);
//Receive the Data for Left Right and Middle Range from laserScanner
stream->receive(laserL_Buffer,32);
stream->receive(laserR_Buffer,32);
stream->receive(laserM_Buffer,32);
delete stream;
float l = strtof(laserL_Buffer,nullptr);
float m = strtof(laserM_Buffer,nullptr);
float r = strtof(laserR_Buffer,nullptr);
std::cout << std::fixed << std::setprecision(8) << l << std::endl;
std::cout << std::fixed << std::setprecision(8) << m << std::endl;
std::cout << std::fixed << std::setprecision(8) << r << std::endl;
所有的答案好感謝,我只是想出了這個問題。我將strtof改爲boost :: lexical_cast。然後它運行良好。
不確定是否相關,但:您確定要'刪除流',還是應該刪除連接符? –
offtopic:'//發送p位置char cT ='l';'這是我不喜歡評論的主要原因。 – user463035818
在發佈和調試過程中'laserX_Buffer'的內容是否相同? – piwi