他の回答は問題が何であるかを説明していますが、独自のアルゴリズムを作成する代わりに、標準ライブラリのアルゴリズムを利用するソリューションを次に示します (例には C++11 が必要です)。
bool all_alpha( std::string const& s )
{
return std::all_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isalpha) );
}
上記の関数は、文字列内のすべての文字がアルファベットの場合にのみ true を返します。数字のみを許可しない場合は、少し異なる関数を使用します。
bool any_digit( std::string const& s )
{
return std::any_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
また
bool no_digits( std::string const& s )
{
return std::none_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
これらの関数を使用して、ユーザーから受け取った入力を検証します。
C++11 の機能を使用できない場合は、関数を変更してstd::find_if
代わりに使用し、の戻り値を比較してfind_if
成功s.end()
/失敗を判断できます。