仅接受字母/字母以输入变量,如果不是字母,请重复出现
Accept only Alphabet/Letters for input of a variable, reprompt if not letters
我已经陷入困境了两天。我在Google上搜索了第20页,但无法弄清楚。
我只需要接受townName
上输入的字母字母。
我已经尝试了各种循环(我可以想到或找到(。另外,我已经读到isalpha()
仅适用于字符。但是,我已经搜索并实施了将字符串从输入转换为字符的方法,我只是没有到达任何地方。
这是我的最后一次尝试:
// Input, validate, and set string name of town
cout << "Enter name of town: ";
getline(cin, townName);
cin >> townName; cin.ignore();
while (townName != isalpha()) {
cout << "Enter the town name - alphabet only.";
cin >> townName; }
我知道这不是isalpha
的适当使用。我还尝试了isalpha(townName)
,使用Bools,但是如果它包含Alpha/White Space以外的任何内容,并且是否仅是Alpha,则需要返回提示。
您在正确的轨道上。您需要使用isalpha
检查字符串的每个字符。您甚至可能想允许空间,即"纽约"等?我建议编写自己的方法,以对整个输入字符串进行循环进行操作。将整个内容放在一段时间内,您应该全力以赴做自己想做的事。
#include <iostream>
#include <string>
#include <cctype>
// check for only alphabetical letters in string (or spaces)
bool lettersOrSpaces(const std::string& str)
{
for (size_t i = 0; i < str.size(); i++)
{
// make sure each character is A-Z or a space
if (! std::isalpha(str[i]) && ! std::isspace(str[i]))
{
return false; ///< at least one "no match"
}
}
return true; ///< all characters meet criteria
}
int main()
{
std::string townName;
std::cout << "Enter name of town: ";
while (std::getline(std::cin, townName) && !lettersOrSpaces(townName))
{
std::cout << "Enter the town name - alphabet only: ";
}
std::cout << "The name of town is: " << townName << std::endl;
return 0;
}
相关文章:
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 使用不变量来确定二分搜索中的边界条件
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- C++变量等于不变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- 有没有一种通用的方法来实现不变量
- 如果不是多个语句,请使用 if 语句
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- C++我们可以取消引用此指针吗?如果是这样,那么如何,如果不是,那为什么?
- 如果不分配内存,我如何能够为变量创建和分配值?
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 未能优化看似明显的循环不变量(但volatile限定符发挥了神奇的作用)
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如果静态变量只为程序的整个部分存储了一个副本,为什么我不能使用静态变量交换 2 个数字?
- 删除 QGraphicsPixmapItem (如果它已添加到场景中).如果不添加到场景
- 从库中发出信息,而无需运行时成本(如果不需要)
- 可能的模板和constexpr - 如果不兼容
- 如果不是这样,我需要帮助理解这个嵌套的问题
- 如果输入变量的数据类型与以前不同,如何使我的循环仍然正常运行?
- 仅接受字母/字母以输入变量,如果不是字母,请重复出现