ispunct() Function in C++

ispunct() Function in C++

本文关键字:in C++ Function ispunct      更新时间:2023-10-16
char punct(char a[], int len) {
    for (int i = 0; i < len; i++) {
        if (ispunct(a[i]))
            { return i; }
        return -1;
    }
}

谁能告诉我为什么这个函数只为我交给它的每个字符串返回 -1?我正在编写一个程序来从.txt文件中获取单词并将它们输出(稍作改动)到不同的.txt文件中,我需要从字符串中删除标点符号。但是,我似乎无法使用ispunct()函数检测到标点符号的位置。我什至使用我能想象到的所有标点符号情况编写了自己的函数,它仍然只返回 -1。是这里的函数有问题还是我给它的字符串有问题?如果需要显示更多我的代码,请告诉我。谢谢!

这是因为如果ispunct(a[0])返回false,则调用return -1

您应该将默认返回移到循环之外:

char punct(char a[], int len) {
    for (int i = 0; i < len; i++) {
        if (ispunct(a[i]))
            { return i; }
    }
    return -1;
}

请注意,此函数仅返回第一个标点索引,而不是所有索引。我猜你是在函数之外处理这种情况。