2011-02-12 30 views
1

我有一个程序,用户必须通过输入数字1-5来进行选择。我将如何处理他们输入数字以外的数字或甚至字符时可能出现的任何错误?忽略用户输入以外的内容

编辑:对不起,我忘了提,这将是C++

+0

嗯,什么编程语言? – 2011-02-12 01:33:17

+0

对不起,我把那部分拿出来了。 C++是语言。 – Joshua 2011-02-12 01:37:01

回答

2

注意这一点。

int main(int argc, char* argv[]) 
{ 
    int i=0; 
    do { 
    std::cout << "Input a number, 1-5: "; 
    std::cin >> i; 
    } while (i <1 || i > 5); 
    return 0; 
} 

的问题是,std::cin >> i从输入流中删除任何东西,除非它是一个数字:如果用户输入一个字母下面会产生一个无限循环。因此,当它循环并且第二次调用std::cin>>i时,它会读取与以前相同的内容,并且永远不会让用户输入任何有用的内容。

所以更安全的赌注是先读一个字符串,然后检查是否有数字输入:

int main(int argc, char* argv[]) 
{ 
    int i=0; 
    std::string s; 
    do { 
    std::cout << "Input a number, 1-5: "; 
    std::cin >> s; 
    i = atoi(s.c_str()); 
    } while (i <1 || i > 5); 
    return 0; 
} 

您可能需要使用的东西比atoi虽然更安全。