如何将 *argv[] 转换为 isaplha 中的字符串

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

本文关键字:isaplha 字符串 转换 argv      更新时间:2023-10-16

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

任何帮助将不胜感激!

// 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
        /*...*/
}

将其分解为多个部分。

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