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 ...
随机推荐
- 中国超级计算机为什么不能为AI提供算力?
网上看到这样的帖子: https://www.zhihu.com/question/609008408/answer/3130831897 ============================== ...
- springboot2集成oauth2坑二(The bean 'scopedTarget.oauth2ClientContext', defined in class path resource )
码云地址:https://gitee.com/lpxs/lp-springcloud.git 有问题可以多沟通:136358344@qq.com. 由于使用Enableoauth2sso注解一直报错, ...
- esp32挂esphome
esp32挂esphome 使用docker创建容器 docker run -d --name='esphome' \ --restart=always \ -p 6052:6052 \ -e TZ= ...
- Linux 更新 TeX Live
更新 TeX Live 假设你的旧版 TeX Live 版本号为 2023,新版 TeX Live 版本号为 2024.你需要在下面的命令中相应地更改实际版本号.TeX Live 版本可以通过 tlm ...
- 【测试平台开发】——04Flask后端api开发实战(一)
一.测试平台开发模式 要开发一套平台有两种开发模式,一个[大而全],一个[小而简]. 说道[大而全]想到目前大型项目都使用的语言[JAVA],[小而简]想到的是[Python]语言. 重武器(大而全) ...
- Mac上HomeBrew安装及换源教程
Mac上HomeBrew安装及换源教程 Mac的Mac OS系统来源于Unix系统,得益于此Mac系统的使用类似于Linux,因此Linux系统中的包管理概念也适用于Mac,而HomeBrew便是其中 ...
- ERR_INVALID_REDIRECT
原因为: response.sendRedirect(url) url地址写错了
- 【YashanDB数据库】YAS-02079 archive log mode must be enabled when database is in replication mode
[标题]错误码处理 [问题分类]调整归档 [关键字]关闭归档.YAS-02079.replication mode [问题描述]执行alter database noarchivelog 关闭归档时, ...
- 为什么MySQL 默认隔离级别是RR,又被阿里设置为RC
我们知道,我们可以通过这个命令查看数据库当前的隔离级别,MySQL 默认隔离级别是RR. select @@tx_isolation; ANSI/ISO SQL定义的标准隔离级别有四种,从高到底依次为 ...
- CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比
css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...