我有一个奇怪的问题,我无法修复。我从微控制器通过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