#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"

class StringSubscriber : public rclcpp::Node
{
public:
  explicit StringSubscriber(const std::string& topic_name)
    : Node("string_subscriber")
  {
    subscription_ = create_subscription<std_msgs::msg::String>(
      topic_name, 10, std::bind(&StringSubscriber::stringCallback, this, std::placeholders::_1));
  }

private:
  void stringCallback(const std_msgs::msg::String::SharedPtr msg)
  {
    RCLCPP_INFO(get_logger(), "Received message: '%s'", msg->data.c_str());
  }

  rclcpp::Subscription<std_msgs::msg::String>::SharedPtr subscription_;
};

int main(int argc, char** argv)
{
  rclcpp::init(argc, argv);
  auto node = std::make_shared<StringSubscriber>("String_msg_Communication");
  rclcpp::spin(node);
  rclcpp::shutdown();
  return 0;
}
