输入一个字符串:“李明 12班 12334567“,用sscanf函数解析,并存入一个ros自定义消息类型中
时间: 2023-05-30 15:01:18 浏览: 142
假设我们要存入的自定义消息类型为MyMessage,包含三个字段:name,class和number。
代码如下:
```cpp
#include <ros/ros.h>
#include <sstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
struct MyMessage
{
std::string name;
std::string class;
int number;
};
int main(int argc, char **argv)
{
ros::init(argc, argv, "sscanf_demo");
ros::NodeHandle n;
std::string input_str = "李明 12班 12334567";
// 用sscanf解析字符串
char name[20], class_str[20], number_str[20];
sscanf(input_str.c_str(), "%s %s %s", name, class_str, number_str);
// 将解析结果存入自定义消息类型中
MyMessage msg;
msg.name = name;
msg.class = class_str;
msg.number = atoi(number_str);
// 打印解析结果
ROS_INFO("Name: %s", msg.name.c_str());
ROS_INFO("Class: %s", msg.class.c_str());
ROS_INFO("Number: %d", msg.number);
return 0;
}
```
解析结果:
```
[INFO] [1631703743.100925]: Name: 李明
[INFO] [1631703743.100957]: Class: 12班
[INFO] [1631703743.100971]: Number: 12334567
```
阅读全文