-1
我得到一個對象(msg.data
)是一個數字或一個字符串。如果它是一個字符串,我不想使用它,如果它是我想要的數字。目前,我解決了這個問題與ostringstream
,但我覺得有辦法更好的解決方案:最有效的方法,如果對象是一個字符串
void scan_cb(const sensor_msgs::LaserScan::ConstPtr& scan)
{
float dist = 0.0f;
std::ostringstream s;
s << scan->ranges[0]; // can be string (always "inf") or a float
if(s.str() != "inf"){
dist += scan->ranges[0];
}
...
我在乎效率,因爲這是運行的每個許多次循環的一部分。
的基本結構是一個ROS消息,從某一主題的到來,並且可以具有基本上任何數據類型。 在這種情況下,我使用LaserScan message,文件沒有提到range[x]
可以返回「INF」。
你對象是*始終*字符串(上wikipedia浮點數的IEEE-754表示更多的參考資料)。你想要做的是解析字符串。 – StoryTeller
我試圖澄清,我的對象是'msg.data',它不清楚這是什麼類型。 – Jonas
* * msg.data是怎麼聲明的? –