我有以下功能:
Workbook_Open
并且无论字符串是否通过,它总是返回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;
}