如何在 isaplha 中将 *argv[] 变成一个字符串

How to turn *argv[] into a string inside isaplha

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...

如有任何帮助,我们将不胜感激!

把它分解成碎片。

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";

因为 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";
// 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
        /*...*/
}