yarpparseparameters.cpp

来自「一个语言识别引擎」· C++ 代码 · 共 106 行

CPP
106
字号
// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-

/*
 * Copyright (C) 2006 Paul Fitzpatrick, Giorgio Metta
 * CopyPolicy: Released under the terms of the GNU GPL v2.0.
 *
 */

///
///  $Id: YARPParseParameters.cpp,v 1.3 2006/10/24 16:43:50 eshuy Exp $
///
///

#include <yarp/YARPParseParameters.h>

///using namespace std;

bool YARPParseParameters::parse (int argc, char *argv[], const YARPString &key, YARPString &out)
{
	for (int i = 1; i < argc; i++)
        {
            if (argv[i][0] == '-')
                {
                    // found parameter, check key
                    if (key == YARPString(argv[i]+1)) 
                        {
                            // found key
                            i++;
		
                            if (i==argc)
                                return false;
                            else if ( (argv[i][0] == '-') && (!isdigit(argv[i][1])))
                                return false;
                            else if (key == YARPString("name"))	// exception, "name"
                                {
                                    // append "/"
                                    out = "/";	
                                    out.append(YARPString(argv[i]));
                                    return true;
                                }
                            else
                                {
                                    out = YARPString (argv[i]);
                                    return true;
                                }
                        }
                }
        }
	return false; 
}

bool YARPParseParameters::parse (int argc, char *argv[], const YARPString &key)
{
	for (int i = 1; i < argc; i++)
        {
            if (argv[i][0] == '-')
                {
                    // found parameter, check key
                    if (key == YARPString(argv[i]+1))
                        return true;
                }
        }
	return false; 
}

bool YARPParseParameters::parse (int argc, char *argv[], const YARPString &key, int *out) 
{
	YARPString dummy;
	if (YARPParseParameters::parse(argc, argv, key, dummy))
        {
            *out = atoi(dummy.c_str());
            return true;
        }
	else
		return false;

}

bool YARPParseParameters::parse (int argc, char *argv[], const YARPString &key, double *out) 
{
	YARPString dummy;
	if (YARPParseParameters::parse(argc, argv, key, dummy))
        {
            *out = atof(dummy.c_str());
            return true;
        }
	else
		return false;

}

bool YARPParseParameters::parse (int argc, char *argv[], const YARPString &key, char *out) 
{
	YARPString dummy;
	if (YARPParseParameters::parse(argc, argv, key, dummy))
        {
            ACE_OS::strcpy(out, dummy.c_str());
            return true;
        }
	else
		return false;

}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?