博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在vc下打印参数串
阅读量:5055 次
发布时间:2019-06-12

本文共 1373 字,大约阅读时间需要 4 分钟。

如果是标准的C++代码、直接以下代码便可以把所有的参数输出了

#include 
int main(int argc, char* argv[]){ for(int index = 0; index < argc; index++) { printf("%s\n", argv[index]); } return 0;}

比如程序名是test.exe、运行命令了test.exe test

那么argv[0]就是test.exe、argv[1]便是test

 

但是在一个标准的VC控制台程序里、入口函数是_tmain而不是main、这就意味着有可能是unicode的编码也有可能是ascii编码的、如果新建一个VC项目也输入以上的命令、结果会大有不同

// test_argv.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){    for(int index = 0; index < argc; index++)    {        printf("%s\n", argv[index]);    }    return 0;}

这里返回的argv[0]是t、返回的argv[1]也是t、所以只返回了参数字符的首字符、这里莪们改一下、把printf中的%s换成大写的%S、那么结果又会再次正常了

// test_argv.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include 
int _tmain(int argc, _TCHAR* argv[]){ for(int index = 0; index < argc; index++) { printf("%S\n", argv[index]); } return 0;}

根据MSDN的官方解释、当函数是printf时、%s输出的是单字符、%S输出的则是宽字符串、这样便恍然大悟了、这里因为windows下的_tmain接收的参数是宽字符串_TCHAR *而不是标准ASCII下的char *、所以当使用和标准C相同的代码时便会发生了不预期的想法、

 

当然也可以使用标准C++的cout方法输出

// test_argv.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include 
int _tmain(int argc, _TCHAR* argv[]){ for(int index = 0; index < argc; index++) { std::wcout << argv[index] << std::endl; } return 0;}

这里使用的是wcout方法而不是cout、不然输出的只会是个指针地址、

 

参考文章:

转载于:https://www.cnblogs.com/klobohyz/archive/2012/07/25/2608902.html

你可能感兴趣的文章
jQuery html text val方法使用
查看>>
Eclipse寻找JVM的机制
查看>>
Day2:购物车
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
程序员必备英语.net版(.net菜鸟的成长之路-零基础到精通)
查看>>
DevExpress Components16.2.6 Source Code 重编译教程
查看>>
弹窗 自定义 页面
查看>>
poj2752seek the name, seek the fame【kmp】
查看>>
洛谷P1135 奇怪的电梯【bfs】
查看>>
批量解决 word/wps 中公式和文字不对齐的问题
查看>>
多边形的研究
查看>>
三角函数相关证明
查看>>
THUWC2017 在美妙的数学王国中畅游
查看>>
如何让 vim 可以在命令行执行命令并且附加参数
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
正则表达式
查看>>
【Html基础】之<h1>~<h6> <p> <br> <hr>
查看>>
爬取校园网新闻
查看>>