通过命令行c ++用括号传递参数

时间:2015-07-22 00:52:18

标签: c++ bash

我正在创建一个程序来验证通过命令行传递的电话号码。用户必须遵循以下标准,(xxx)-xxx-xxxx。

每当我使用括号时,我都会收到以下错误," -bash:语法错误接近意外令牌。"

我的代码不应该出现问题,但这里有问题。

#include <iostream>
#include <cctype>
#define die(errmsg) cerr << errmsg << endl; exit(1);
#define ISDIGIT(c) (c>=48 && c<=57);
using namespace std;

int main(int argc, char ** argv)
{
    string phoneNumber = argv[1];

    //Validations
    if(phoneNumber.size() != 14)
    {
        die("Not the right amount of numbers and characters.
             Use this format, (415)-713-9807.");
    }
    else if(phoneNumber[0] != '(' || phoneNumber[4] != ')')
    {
        die("Please use parenthesis around area code. Ex: (415).");
    }
    else if(phoneNumber[5] != '-' || phoneNumber[9] != '-')
    {
        die("Please use dashes to sepearte numbers like so, (415)-713-9807.");
    }

    //Check for numbers by splitting numbers in groups.
    string left = phoneNumber.substr(1,3);
    string middle = phoneNumber.substr(6,3);
    string right = phoneNumber.substr(10);
    string number = left + middle + right;
    for(int i=0; i<number.size(); i++)
    {
        if(!isdigit(number[i]))
        {
            die("Please enter numbers only, such as (415)-713-9807.");
        }
    }


    cout << "Valid Phone Number.";
}

1 个答案:

答案 0 :(得分:1)

你尝试用引号传递它吗?