如何将* argv []转换为isalpha内的字符串

时间:2015-03-12 12:46:27

标签: c++ argv

编程C ++的新手,并且在使用isaplha来重新认识并在参数为字母时显示错误消息时遇到问题。 A,A1和以字母开头的字母数字的任何组合都会显示错误,1a将如何传递为不包含字母。我的代码如下。

for(int s = 1; s< argc; s++)
{
    if (isalpha(*argv[s]))
    {
        cout << "You have entered a letter, however letters are not valid arguments";
    }
    else etc... etc...

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

// Store args in a vector of strings for ease of use (excluding first arg)
auto args = std::vector<std::string>{argv+1, argv+argc};

// Iterate through each argument
for(auto& arg : args)
{
    // If any of the characters in arg (a string) are alpha
    if(std::any_of(arg.begin(), arg.end(), std::isalpha))
        /*...*/
    else
        /*...*/
}

答案 1 :(得分:1)

将其分解成碎片。

argv[1]是第一个命令行参数 (argv[2]是第二个,依此类推......)

它的长度由strlen确定 迭代这个长度,检查每个字符:

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

    for(int s = 0; s< strlen(Param1); s++)
    {
        if (isalpha(Param1[s]))
        {
            cout << "You have entered a letter, however letters are not valid arguments";

答案 2 :(得分:0)

由于argv是包含C字符串的数组,argv[s]是C字符串,*argv[s](等于argv[s][0])只访问该字符串中的第一个字符。

如果你想检查整个char数组中没有字母,你也必须遍历那个数组:

for(int s = 1; s < argc; s++) // loops through the array of C-strings 
{
    for(int c = 0; c < strlen(argv[s]); c++) // loops through each C-string
    {
        if (isalpha(argv[s][c]))
        {
            cout << "You have entered a letter, however letters are not valid arguments";