【发布时间】:2017-12-25 13:05:08
【问题描述】:
我正在为作业编写程序。部分原因是我需要验证某个字符串,所以它只包含字母字符,但我无法弄清楚。 这是我用来编写验证器的测试代码。
#include <cstring>
#include <iostream>
#include <string>
using namespace std;
bool isValidName(string str);
string str[20];
main() {
cout << "enter name\n ";
getline(cin, str[1]);
isValidName(str[1]);
cout << isValidName << endl;
system("pause");
}
bool isValidName(string str) {
for (int i = 0; i < (int)str.length(); i++) {
if (!isalpha(str[i])) {
return false;
break;
}
return true;
break;
}
}
不管我放什么字符,它都会返回1 :o(
(感谢 Paul Rooney 修复缩进)
【问题讨论】:
-
当你编译和运行这个程序时会发生什么?实际结果与您想要的结果有何不同?
-
您还应该修复代码的缩进。除了缩进所需的任何空格外,每一行的开头都应该有额外的四个空格。当您复制和粘贴代码时,您可以突出显示它并按下 Ctrl-K 以自动插入这些额外的空格。
-
提示:
string str[20]不是一个二十个字符的字符串,它是一个由二十个字符串组成的数组。数组也是零索引的,所以str[0]是第一个条目。 -
您的
breaks 是多余的。它们出现在返回语句之后。还要考虑在检查只有第一个字符isalpha之后是否要返回 true。 -
感谢大家的cmets! @tadman 我放了 str[20] 因为我想要一个字符串数组,但我只在一个上测试验证。