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 ...
随机推荐
- 【转载】 Makefile的静态模式%.o : %.c
版权声明:本文为CSDN博主「猪哥-嵌入式」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/u012351051 ...
- sublime 快速生成html基础代码
一.快速生成HTML5的头部信息的步骤: 1.Ctrl + N,新建一个文档: 2.Ctrl + Shift + P,打开命令模式,再输入 sshtml 进行模糊匹配,将语法切换到html模式: 3. ...
- MFC制作带界面的DLL库
## MFC如何创建一个带界面的DLL(动态链接库) 1.创建项目 打开VS,文件->新建->项目: 点击确定之后弹出来的界面,点击下一步->选择"使用共享MFC DLL的 ...
- springcloud线上发布超时方案之终极杀招:预热(测试用例)
springcloud线上发布超时系列文章: springcloud线上发布超时之feign(ribbon饥饿加载) springcloud线上发布超时之grpc springcloud线上发布超时方 ...
- Unix、Linux、GNU 关系梳理
之前写了一篇 MSYS2.MinGW 和 Cygwin 关系梳理的博客,但是要讲清它们几个的关系最好还是先了解一下操作系统的发展历程.遂补充了这篇博客. UNIX:现代操作系统的始祖 Operatin ...
- 理解async 和 await
await 后面接的是promise,await语句下面(注意:不是await后面,而是await所在语句的下面,即下行以后)的代码就相当在promise.then()里面执行,有文章说 await后 ...
- 全网最适合入门的面向对象编程教程:43 Python 常用复合数据类型-扩展内置数据类型
全网最适合入门的面向对象编程教程:43 Python 常用复合数据类型-扩展内置数据类型 摘要: 在 Python 中,内置数据类型(如列表.字典.集合等)非常强大,但在某些情况下,可能需要扩展这些数 ...
- ServletConfig 类和ServletContext 类
ServletConfig 类 ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类. Servlet 程序和 ServletConfig 对象都是由 Tomcat ...
- DRBD - Distributed Replication Block Device
Ref https://computingforgeeks.com/install-and-configure-drbd-on-centos-rhel https://www.veritas.com/ ...
- 防御DDOS攻击
如何防御DDOS攻击 1.采用高性能的网络设备 首先要保证网络设备不能成为瓶颈,因此选择路由器.交换机.硬件防火墙等设备的时候要尽量选用知名度高.口碑好的产品.再就是假如和网络提供商有特殊关系或协议的 ...