我被困在这两天了。我在谷歌搜索了第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)
,使用bool但我需要返回一个提示重新输入,如果它包含除alpha / white空格以外的任何内容,并且如果它只是alpha继续使用main。
答案 0 :(得分:1)
你有点走上正轨。您需要使用isalpha
检查字符串的每个字符。你甚至可能想要允许空格,即&#34;纽约&#34;等等。?我建议编写自己的方法,在整个输入字符串的循环中执行此操作。把整个事情放在一个while循环中,你应该全力以赴做你想做的事。
#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;
}