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

2023-12-15 05:17:38

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

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

code review!

一.一般我用的int system( const char *command )是C语言中的函数

  • https://zh.cppreference.com/w/c/program/system
    在这里插入图片描述

  • https://zh.cppreference.com/w/cpp/utility/program/system
    在这里插入图片描述

在C++中,std::system和C语言中的system函数在功能上是相似的,都可以用于执行系统命令。然而,它们之间存在一些区别和比较:

  1. 命名空间:std::system函数是C++标准库中的一个函数,位于std命名空间中,需要包含 <cstdlib> 头文件。而C语言中的system函数位于全局命名空间中,需要包含 <stdlib.h>(或在C++中使用 <cstdlib>)头文件。

  2. 类型转换:在C++中,可以使用std::string等C++类型作为参数,但需要将其转换为C风格字符串(通过调用c_str()函数)。而在C语言中,需要直接使用C风格字符串(const char*)作为参数。

  3. 返回类型:C++中的std::system函数返回一个int类型的值,表示命令执行的状态。而C语言中的system函数也返回一个int类型的值,但它的返回值可能会有特定的含义,例如返回0表示成功执行,非零值表示出现错误。

  4. 标准化:std::system函数是C++标准库中的一部分,遵循C++的规范和标准。而C语言中的system函数是C标准库的一部分,遵循C的规范和标准。

  5. 异常处理:C++中的std::system函数可以抛出异常,以便在命令执行过程中出现错误时进行处理。而C语言中的system函数无法抛出异常,错误只能通过返回值来表示。

需要注意的是,无论是使用std::system还是system函数,都需要谨慎处理传递给它们的命令字符串,以避免安全漏洞,如命令注入攻击。要确保安全性,请验证和过滤用户输入的内容。

总的来说,std::system和C语言中的system函数在功能上是相似的,但在使用方式、命名空间、类型转换、返回类型和异常处理等方面存在一些差异。在C++代码中,可以选择使用std::system函数,以更好地与C++标准库和语言特性进行集成。

例1:std::string使用c_str()转const char*使用system()

在这里插入图片描述

例2:Qt中使用std::string拼接QString.toStdString()转std::string,再std::string.c_str()转const char*使用system()

在这里插入图片描述

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