qt-C++笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景

发布时间:2023年12月18日

qt-C++笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景

参考博文:C++笔记之system()用于在Qt中执行系统命令的习惯

code review!

注:之所以记录该笔记,是因为在Qt中自己经常使用C语言的int system( const char *command );去执行系统命令,而原始命令字符串的拼接过程中往往混杂着QString和std::string。

std::to_string()toStdString().toLocal8Bit().constData()是在不同情况下使用的字符串转换方法,具有不同的用途和适用场景。

  1. std::to_string()

    • 使用场景:将基本数据类型(如整数、浮点数等)转换为字符串。

    • 适用类型:整数、浮点数等基本数据类型。

    • 示例:

      #include <string>
      
      int main() {
          int num = 42;
          std::string str = std::to_string(num);
      
          // 使用转换后的字符串
          // ...
      
          return 0;
      }
      
  2. toStdString()

    • 使用场景:将QString对象转换为std::string对象。

    • 适用类型:QString对象。

    • 示例:

      #include <QString>
      #include <string>
      
      int main() {
          QString qstr = "Hello, world!";
          std::string str = qstr.toStdString();
      
          // 使用转换后的 std::string
          // ...
      
          return 0;
      }
      
  3. .toLocal8Bit().constData()

    • 使用场景:将QString对象转换为const char*指针,用于与接受C风格字符串参数的函数进行交互。

    • 适用类型:QString对象。

    • 示例:

      #include <QString>
      
      int main() {
          QString qstr = "Hello, world!";
          const char* cstr = qstr.toLocal8Bit().constData();
      
          // 使用转换后的 const char* 字符串
          // ...
      
          return 0;
      }
      

在使用这些方法时,请确保包含了相应的头文件,如<string><QString>。此外,要注意在使用.toLocal8Bit().constData()时,确保QString的生命周期足够长,以避免悬空指针问题。

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_43297891/article/details/135007127
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。