C++PrimerPlus(第6版)中文版:Chapter17.4.4命令行处理技术

C++有一种让在命令行环境中运行的程序能够访问命令行参数的机制,方法就是使用下面的main()函数:

int main(int argc,char * argv[])

argc为命令行中参数的个数,其中包括命令名本身(就是构建出来的exe程序名)。argv是个指针,指向一个char的指针。这个有点抽象,所以可以将argv看作是一个指针数组,其中的指针指向了命令行参数。argv[0]是一个指针,指向命令行中的第一个字符串。

这个程序会统计输入的多个文件内含有多少个字符,源代码如下:

// counter.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <fstream>
#include <cstdlib>

int main(int argc,char * argv[])
{
    //std::cout << "Hello World!\n";
    using namespace std;
    if (argc==1)//quit if no arguments
    {
        cerr << "Usage: " << argv[0] << " filename[s]\n";
        exit(EXIT_FAILURE);
    }
    ifstream fin;//open stream
    long count;
    long total = 0;
    char ch;
    for (int file=1;file<argc;file++)
    {
        fin.open(argv[file]);//connect stream to argv[file]
        if (!fin.is_open())
        {
            cerr << "Could not open" << argv[file] << endl;
            fin.clear();
            continue;
        }
        count = 0;
        while (fin.get(ch))
        {
            count++;
        }
        cout << count << "characters in " << argv[file] << endl;
        total += count;
        fin.clear();//needed for some implements
        fin.close();//disconnect file
    }
    cout << total << "characters in all files\n";
    return 0;

}


运行的时候,可以先构建程序,然后进入cmd命令行模式,进入到couter.exe所在的目录,运行程序:这种方式下,这两个txt文件都是和exe文件在一个目录内。

 

或者在visualstudio中,调试---〉couter属性----〉调试目录中设置命令参数:aaa.txt,bbb.txt。这种情况下,txt文件应该是放在项目文件所在的目录,而不是exe所在的目录。

 文件位置如图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值