码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • std::cout、printf 和 RCLCPP_INFO的对比


    1、std::cout

    C++自带,不用标明数据的类型,可以直接输出,不过只能输出几种基本格式的数据。

    2、printf

    C++自带。
    typedef 重新定义数据格式后,std::cout是不能正常输出显示的,必须用printf()才能输出uint8_t类型的数据值,需要标明数据的类型。

    printf()函数的调用格式为:

    printf("<格式化字符串>", <参量表>);
    
    • 1
    // 1、整形
    %d  有符号十进制整形
    %ld 十进制长整形
    %3d 位数为3,不足则在左边补空格
    
    %u  无符号十进制整形
    %lu 无符号十进制长整形
    
    %x  无符号十六进制整形,如0x12
    %lx 位数为4,不足则在左边补0,常用,如0x0012
    
    // 2、实型
    %f  float型
    %lf double型
        
    m.n m指域宽,即所占的总的位数,包含小数点;n指精度,即小数的位数
    %f  不指定宽度,整数部分全部输出,并输出6位小数
    
    // 3、字符
    %c  字符
    
    // 4、字符串
    %s  字符串
    
    // 5、指针
    %p  指针
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    ​ 比如:

    int val = 86;
    printf("val= %d, 字符= %c",val,val);
    //val= 86, 字符= V
    
    • 1
    • 2
    • 3

    3、RCLCPP_INFO

    ROS2自带的log输出,分等级,带颜色,输出格式与printf相同,需要标明数据的类型。

    RCLCPP_INFO(get_logger(),"val:%d",val);
    
    • 1

    4、异同点

    4.1 各自优点
    • std::cout简单,不要标明数据类型,直接输出;
    • printf输出数据类型多,可以输出typedef重定义后的类型;
    • RCLCPP_INFO分等级,比如RCLCPP_ERROR会在终端上显示红色,便于对不同的错误等级log分类,且会显示绝对时间以及ros node的名称;
    4.2 选择
    • std::cout和printf可以用linux的重定向>将终端显示输出到指定文件中,而RCLCPP_INFO无法重定向;
    • std::cout使用方便,不用指明数据的类型;
    • print和RCLCPP_INFO需要指明数据类型,一旦数据类型指明错误,则无法输出log显示。
  • 相关阅读:
    c++ 类的特殊成员函数:移动构造函数(五)
    K8S-Helm和相关组件(Dashboard、Prometheus、EFK)
    leetcode4. 寻找两个正序数组的中位数python_二分查找和递归(困难)
    MyBatis-Plus: 简化你的MyBatis应用
    TCP程序设计基础
    编程逻辑入门必备:演绎推理
    大治河西枢纽二线船闸总体设计(lunwen+文献综述+施工方案+水利曲线计算表+图纸)
    【C++】1079:计算分数加减表达式的值(信息学奥赛)
    TexGen简单模型对应inp文件简单梳理-2
    【iOS】—— 深入了解GCD
  • 原文地址:https://blog.csdn.net/Kevin_Xie86/article/details/126806164
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号