c ++字符串搜索功能

时间:2015-10-07 14:39:04

标签: c++ string

我有以下功能:

Workbook_Open

并且无论字符串是否通过,它总是返回2。 任何人都知道为什么?

2 个答案:

答案 0 :(得分:3)

您忘记了return false失败。

这并不是自动发生的;在这种情况下,您的返回值未指定。事实上,你的整个程序都有不确定的行为。

bool specialChk(string a) // ← are you sure you don't want `const string& a`?
{
    for (int i = 0; i < a.length(); i++) {
        if (/* omg at least wrap this */)
            return true;
    }

    return false;  // ← here!
}

digitChk相同。

答案 1 :(得分:2)

你也可以尝试一下。

#include <string>
using namespace std;

bool specialChk(string a) {
    String checkList = "`~!@#$%^&*()-_=+[]{};:\'\",<>./?|\\";

    for (int i = 0; i < a.length(); i++) {
        if(checkList.find(a[i]))
            return true;
    }
    return false;
}

bool digitChk(string a) {
    for (int i = 0; i < a.length(); i++) {
        if (a[i] >= 48 && a[i] <= 57)
            return true;
    }
    return false;
}

int symbolChk(string a) // combining symbol checks
{
    if (specialChk(a) && digitChk(a))
        return 2;
    else if (specialChk(a) || digitChk(a))
        return 1;
    else
        return 0;
}