C++ 命令行传参 参数使用 坐标参数的转换
1. 什么是命令行传参
命令行传参就是在 cmd 命令提示符, 或者 Linux shell 中使用可执行程序时, 可以添加 参数 传递到执行程序中。

程序根据你的输入做出反应。
这个东西没那么神秘,每一个编写过C++, C 程序的同志都见过它,却没有认识到它!
2. 如何传参
#include<iostream>
use namespace std;
int main(int argc, char * argv[]){
cout<<argc<<"\t"<<argv[0]<<"\t"<<argv[1]<<"\t"<<argv[2]<<"\t"<<argv[3]<<endl;
return 1;
}

argc:参数个数;
argv[]: 参数数组;每一个参数字符串最后都会自动添加 \0
int main(int argc, char * argv[])
int main(int argc, char ** argv)
这两个的效果是一样的!
3. 应用实例
传递字符坐标参数 并解析为数字坐标
#include<iostream>
int main(int argc, char * argv[]){
std::cout<<argv[0]<<std::endl;
std::cout<<argv[1]<<std::endl;
std::cout<<argv[2]<<std::endl;
std::cout<<argv[3]<<std::endl;
int point[3][2] = {0}; // Multidimensional array initialization assigment
int j=0, i=0;
for (int param=1; param<argc; param++){ // extract ith_coordinate_param (x,y)
for (i=0; argv[param][i]!='\0'; i++){
if(argv[param][i] >= '0' && argv[param][i] <= '9'){
point[param-1][j] *= 10;
point[param-1][j] += argv[param][i] - '0'; // automatic type conversion char to int
if(!(argv[param][i+1] >= '0' && argv[param][i+1] <= '9')){ // x next isn't a number, so we extract y
j++;
}
}
}
j=0;
}
for(i=0; i<3; i++){
for(j=0; j<2; j++){
std::cout<<point[i][j]<<" ";
}
std::cout<<"\n";
}
return 1;
}

4. 问题
传递到函数中的参数都是字符串类型的。那么我们怎么将他们变成数字类型呢?
在头文件 stdlib.h 中定义了这么几个函数我们可以使用!
double atof(const char *str) //converts the string argument str to a floating-point number (type double).
int atoi(const char *str) //converts the string argument str to an integer (type int).
double param = atof(argv[1]);
int param = atoi(argv[1]);
文章会随时改动,要到博客园里看偶。一些网站会爬取本文章,但是可能会有出入。
转载请注明出处哦( ̄︶ ̄)
https://www.cnblogs.com/asmurmur/
C++ 命令行传参 参数使用 坐标参数的转换的更多相关文章
- Java方法:命令行传参,重载,可变参数,递归
Java方法:System.out.println()//系统类.out对象.输出方法Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中 ...
- 再探命令行传参之c与python
继上一次java命令行传参 python sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:python解释 ...
- Day006 命令行传参
命令行传参 有时候你希望运行一个程序时候再传递给它消息,这要靠传递命令行参数给main()函数实现. 使用方法 写测试代码. public static void main(String[] args ...
- Java基础系列(30)- 命令行传参
命令行传参 有时候你希望运行一个程序的时候再传递给它消息.这就要靠传递命令行参数main()函数实现 package method; public class CommandLine { public ...
- 09 Java的方法 方法的重载 命令行传参
3.方法的重载 重载就是在一个类中,有相同的函数名称,单形参不同的函数. 方法的重载的规则: 方法名称必须相同. 参数列表必须不同(个数不同.或类型不同.参数排序顺序不同等). 方法的返回类型可以相同 ...
- Java小tips之命令行传参
在命令行运行主函数时,后缀字符串,则会储存在args[]数组中,这种方法可以在程序运行时,借助Main函数传参 主类书写不规范见谅 ```java public class hello{ public ...
- 命令行传参是否只能针对main方法
先上结论 命令行传参只能针对main方法而言,而且格式严格 这里在原有主类test基础上创建了另一个类,名字为testCMD,但里面创建的方法并不是main方法,在cmd内编译后进行命令行传参,结果如 ...
- 命令行传参——JavaSE基础
命令行传参 可以在运行一个程序时再传递给它消息,可以依靠命令行传参给mian()函数实现 public class CommandLine(){ public static void main(Str ...
- 解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。
本文是原创文章,未经允许,请勿转载. 原来程序中是通过运行exe,然后加上参数,然程序运行起来的.也就是main(int argc, char** argv)这里是通过argv参数是从命令行 传过来的 ...
- pytest_命令行传参
前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的”--html=report.html ...
随机推荐
- 从论文到图谱,或许只差一个html
书接上回,在文章<论文图谱当如是:Awesome-Graphs用200篇图系统论文打个样>中,我向大家讲述了如何用图的方式思考图计算系统的演进历史,并在后续的系列文中结合Awesome-G ...
- Jenkins配置分布式构建环境——添加固定Agent并使用JNLP启动Agent详解
1.概述 在<Jenkins部署架构概述>这篇博文中对Jenkins部署架构进行了讲解.对于分布式架构,Jenkins包括固态Agent和动态Agent两种方案. 固定Agent(常用于虚 ...
- springboot如何集成Prometheus如何暴露Histogram来获取P99等监控指标
背景 springboot如何集成Prometheus我这里不做详细描述,要想了解集成过程,可以参考一下博客: Spring Boot 使用 Micrometer 集成 Prometheus 监控 J ...
- vscode 下配置 clang
需要在workspace的文件夹下添加文件: .clang-format 更多参数说明: https://clang.llvm.org/docs/ClangFormatStyleOptions.htm ...
- C# 使用特性的方式封装报文
在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦. 本次拟以特性方式实现,以兼顾维护性与扩展性. 思想: 一种命令对应一个类,其类中的各个属性 ...
- sc2 天梯地图
没记错的话以前 7 张 ban 3 张,非常合理,现在 9 张怎么还是 ban 3 张 好哥哥达蒙星际2教学 Goldenaura ban 三四矿近,挂运输机的地方长,架坦克的点位多,ZvT 打不了一 ...
- containerd在线部署
containerd的作用以及跟docker的区别 Containerd是一个用于管理容器生命周期的开源项目.它最初是从Docker项目中分离出来的,现在已经成为了一个独立的项目.它可以用作容器镜像管 ...
- 为 OpenWrt 路由器编译 minieap-sysu 项目
学校的校园网要使用锐捷认证,于是想把认证客户端装到刷了 OpenWrt 的路由器上面.然而认证客户端 Linux 版只支持 x86 架构,我的路由器处理器却是 AArch64 架构,装不了,所以只能想 ...
- Python 绘制 K 线图
import mplfinance as mpf import pandas as pd # 示例数据 data = pd.DataFrame({ 'Date': ['2023-01-01', '20 ...
- Manual 命令手册导出
man 命令的输出中含有大量的格式化字符和终端控制序列,这些是用来在终端中正确显示格式化文本(如加粗,下划线,分页等)所用的.如 BS(Backspace,退格). 如果我们直接用 man comma ...