当前位置: 首页 > news >正文

怎样做企业营销网站/桂林网页

怎样做企业营销网站,桂林网页,健康服务管理中心,广州番禺最新疫情什么是进程的命令行参数 每个进程在启动(双击exe启动、cmd命令行启动或者由其他程序通过CreateProcess启动)的时候,都会有一个命令行参数给它。命令行的参数以空格区分。这个命令行总是不为空,因为命令行参数的第第一参数是exe程…

什么是进程的命令行参数

每个进程在启动(双击exe启动、cmd命令行启动或者由其他程序通过CreateProcess启动)的时候,都会有一个命令行参数给它。命令行的参数以空格区分。这个命令行总是不为空,因为命令行参数的第第一参数是exe程序的启动路径。但是一般情况下,我们会忽略这个参数。一般情况下,我们忽略第一个参数,将后面的内容作为命令行参数对待。

如何获取命令参数一

方法一:通过Windows API GetCommandLine 获取命令参数。
#include <iostream>
#include <Windows.h>
int main()
{PTSTR cmdStr = GetCommandLine();std::wcout << cmdStr << std::endl;
}

在VS项目的属性页中,设置调试属性为 key1=value1 key2=value2 这个属性可以配置启动程序的命令行参数。

调试项目之后之后,会得到下面的输出结果"D:\project\ConsoleApp1\x64\Debug\ConsoleApp.exe" key1=value1 key2=value2,从输出结果可以看到GetCommandLine api获取到的结果 第一个参数为"D:\project\ConsoleApp1\x64\Debug\ConsoleApp.exe" ,第二个参数为key1=value1,一般参数都是key-value键值对。第三个参数为key2=value2.一般情况下,我们会忽略第一个参数。从程序的角度来讲,命令行参数本质上就是以0结尾的一个字符串。我们可以定义任何格式的字符串作为命令行参数。但是通常情况下,我们以空格作为分割命令行参数的分割符号。

一般我们用key=value的形式表示一个命令行参数。但这也不是绝对的。我们也还可以其他的参数格式key1=value1 --key2=value2 /key3=value3 --key4 value4 /key5 value5具体参数,可以在程序中,自行解析。

方法二:通过修改main函数的参数

main函数除了可以写成上面的格式之外,还可以写成带参数的格式,如下:

int main(int argc,char** argv)

第一个参数argc表示命令行参数的个数,第二个参数表示命令行参数的指针数组。这种写法的好处是不用自己手动解析参数,操作系统会帮助我们解析好参数之后,放在数组指针中,我们直接拿着用就可以。

#include <iostream>
#include <Windows.h>
int main(int argc,char** argv)
{for (int i = 0; i < argc; i++) {std::wcout << argv[i] << std::endl;}
}

上面代码,通过循环输出所有的参数,输出结果如下:

方法三:通过全局变量获取命令行参数

windows提供了__argc的全局变量表示命令行参数的个数,通过__argc或者__wargv表示命令行的参数,相当于方法二中 main函数的第二个参数char** argv__wargv表示unicode版本,__argc表示ANISC版本。

#include <iostream>
#include <Windows.h>
int main(int argc,char** argv)
{std::cout << __argc << std::endl;for (size_t i = 0; i < __argc; i++){std::wcout << __argv[i] << std::endl;}
}

运行上面代码,可以得到如下结果:直接打印出命令行参数的个数和参数的具体内容。当然微软不建议使用这两个全局变量来访问命令行参数个数和参数内容。一般建议使用方法一和方法二访问命令行参数和参数内容。

解析命令行参数

微软提供一个CommandLineToArgvWAPI来对命令行参数进行解析,但是这个API目前貌似只提供了UNICODE版本的API。

#include <iostream>
#include <Windows.h>
int main(int argc,char** argv)
{PTSTR cmdStr = GetCommandLine();int numArgs;PWSTR* str = CommandLineToArgvW(cmdStr, &numArgs);for (size_t i = 0; i < numArgs; i++){std::wcout << str[i] << std::endl;}HeapFree(GetProcessHeap(), 0, str);
}

执行上述代码会输出以下结果,可以看到三个命令行参数被正确打印出来。因为CommandLineToArgvWAPI在函数内部会分配内存,所以我们要记得释放内存。尤其是当我们频繁调用这个API的时候。

http://www.whsansanxincailiao.cn/news/30335574.html

相关文章:

  • 网站后台制作教程/公司网站建设北京
  • 做网站原型图软件/自学seo能找到工作吗
  • 长沙移动网站建设哪家好/网络营销属于哪个专业
  • 网站开发团队投入/公司百度推广一年多少钱
  • 设计需要了解的网站/怎样在百度上做广告
  • 在线真正免费定位的网站/网站访问量排行榜
  • wordpress主题安装后图片找不到/武汉seo优化代理
  • 专业找人公司是真的吗/seo外包公司多吗
  • 电子商务网站建设阶段/广州seo搜索
  • 网站备案vpn注销/sem培训
  • 做网站博彩代理怎么找客源/制作一个网页的步骤
  • 网站建设万网/百度广告管家
  • 网站设计网/网上哪里可以免费打广告
  • 织梦网站建设/湖南长沙seo教育
  • 企业网站建设计什么科目/网站如何才能被百度收录
  • 曰本孕妇做爰网站/百度在西安的公司叫什么
  • 嘉定公司网站设计/如何建立网站平台
  • 全部免费网站软件/微信营销平台系统
  • 做电影免费ppt模板下载网站/数字营销包括哪六种方式
  • 垂直类门户网站/北京昨晚出什么大事
  • 企业电商网站商城建设/搜索引擎优化seo信息
  • 平板做网站服务器/长沙优化科技有限公司
  • 做网站用java 还是php/北京千锋教育培训机构怎么样
  • 电信网站空间/安卓优化大师手机版下载
  • 注册了网站怎么建设/seo sem是什么意思
  • 网站备案加链接代码/网络推广怎么赚钱
  • 加强网站建设会/个人网站设计欣赏
  • 南京市建委网站下载中心建设工程招标/种子搜索神器
  • 网站建设销售问答/媒介星软文平台官网
  • 河南郑州网站推广优化外包/百度中心