讲师中心 微信公众号
AI工具推荐 视频效率加速

C++如何获取命令行参数?(argc, argv详解)

阿瑶同学_5463

阿瑶同学_5463

发布时间:2025-12-31 18:35:02

|

678人浏览过

|

来源于php中文网

原创

C++中main函数通过argc和argv获取命令行参数:argc为非负整数,表示总参数个数(含程序名),至少为1;argv是char*数组,argv[0]为程序名,argv[1]至argv[argc-1]为用户参数,argv[argc]为空指针。

c++如何获取命令行参数?(argc, argv详解)

在C++中,命令行参数通过main函数的两个形参获取:整型argc(argument count)和字符指针数组argv(argument vector)。它们不是可选的扩展功能,而是标准C++程序启动时由操作系统自动传递的必要接口。

argc 表示参数个数,包含程序名本身

argc 是一个非负整数,代表命令行中输入的**总参数个数**。注意:第一个参数(argv[0])固定是程序的路径或名称,因此即使不带任何额外参数,argc 至少为 1。

  • 运行 ./myapp → argc == 1
  • 运行 ./myapp -v --input data.txt → argc == 4(argv[0]到argv[3])
  • 不要假设 argc > 1 就安全访问 argv[1];必须先判断大小

argv 是指向C风格字符串的指针数组

argv 类型为 char* argv[](等价于 char** argv),每个元素是一个以<p><code>argv 类型为 char* argv[](等价于 char** argv),每个元素是一个以\0结尾的C字符串。这些字符串由系统在程序启动时分配并初始化,生命周期覆盖整个main函数执行期。

结尾的C字符串。这些字符串由系统在程序启动时分配并初始化,生命周期覆盖整个main函数执行期。

协同养育操作系统
协同养育操作系统

协同养育操作系统(Co-Parenting OS)— 离异家庭专业协同养育支持系统。12模块覆盖接送管理、成长记忆库、孩子观察站、亲子关系粘合剂、共同挑战中心、情绪冲突观察、父母成长、成长档案馆、成长阶段引擎、风险预警、驾驶舱、被恶意攻击急救包。当用户涉及离异家庭育儿、协同养育、抚养探视、接送安排、孩子成长记录、亲子关系、离异冲突、被恶意攻击、前任矛盾等话题时触发。

下载
  • argv[0] 是程序被调用时使用的路径/名称(可能含目录,也可能只是basename)
  • argv[1] 到 argv[argc-1] 是用户输入的其余参数,顺序严格对应命令行书写顺序
  • argv[argc] 总是空指针(nullptr),可用作遍历终止条件

常用处理模式:简单遍历与基本解析

对多数工具类程序,直接遍历 argv 并用 std::string 或 strcmp 判断即可。不需要第三方库也能完成常见任务。

立即学习“C++免费学习笔记(深入)”;

  • 用 for (int i = 1; i < argc; ++i) 跳过程序名,处理用户参数
  • 用 std::string arg(argv[i]) 转为现代C++字符串,便于比较和操作
  • 检测开关参数如 -h 或 --help 时,注意前缀匹配逻辑(例如 arg == "-h" || arg == "--help")
  • 提取选项值:若 argv[i] 是 "-o",则下一个参数 argv[i+1](需检查 i+1 < argc)通常是其值

注意事项与常见误区

看似简单,但几个细节容易引发未定义行为或逻辑错误:

  • argv 中的字符串内容不可修改——它们通常位于只读内存段;如需修改,应复制到堆或栈上
  • 中文路径或含空格的参数,在终端中需用引号包裹(如 "文件 name.txt"),shell 会将其整体作为单个 argv 元素传递
  • Windows 控制台默认使用本地编码(如 GBK),而 Linux/macOS 默认 UTF-8;跨平台处理非ASCII参数时需谨慎
  • 不要写 argv[argc] = nullptr —— 系统已保证这一点,手动赋值反而可能越界

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5379

2023.08.02

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2528

2023.11.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1578

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2324

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5824

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

4969

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

6694

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

9094

2024.04.29

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn