我们在课堂上练习了这个练习:
使用默认参数,编写一个向用户询问数字并返回该数字的函数。该函数应该接受来自调用代码的字符串提示。如果调用者没有为提示提供字符串,则该函数应使用通用提示。接下来,使用函数重载,编写一个实现相同结果的函数。
措辞令人困惑,但我知道我需要两个方法,一个是int和一个字符串来重载。
但在与我的老师交谈后,他解释说,使用该程序,用户应该能够输入和输入5或字符串" 5",程序应该能够确定它是否是int或string并输出它。
我已经查看了这个练习,并且有几个"解决方案",其中没有一个在我老师的参数范围内工作。
是否有可能像我老师解释的那样创建一个程序?
如果没有,是否有人对说明书有任何其他解释?
答案 0 :(得分:2)
老师的措辞转化为:
#include <string>
#include <iostream>
#include <stdexcept>
/**
* Prompts the user for an integer input on standard input, and
* returns it. The prompt text is #prompt_text, or "Enter input please"
* if not given.
*
* @throws std::runtime_error if input is not an integer
*/
int promptForInput(const std::string& prompt_text = "Enter input please")
{
std::cout << prompt_text << ": " << std::flush;
int result;
if (std::cin >> result)
return result;
else
throw std::runtime_error("Could not understand your input");
}
int main()
{
const int x = promptForInput();
std::cout << "You entered: " << x << std::endl;
const int y = promptForInput("Gimme intz lol");
std::cout << "You entered: " << y << std::endl;
}
使用重载而不是默认参数,函数是这样的:
/**
* Prompts the user for an integer input on standard input, and
* returns it. The prompt text is #prompt_text.
*
* @throws std::runtime_error if input is not an integer
*/
int promptForInput(const std::string& prompt_text)
{
std::cout << prompt_text << ": " << std::flush;
int result;
if (std::cin >> result)
return result;
else
throw std::runtime_error("Could not understand your input");
}
/**
* Prompts the user for an integer input on standard input, and
* returns it. The prompt text is "Enter input please".
*
* @throws std::runtime_error if input is not an integer
*/
int promptForInput()
{
return promptForInput("Enter input please");
}
在这两种情况下,该程序的输出如下:
[tomalak@andromeda ~]$ ./test2
Enter input please: 4
You entered: 4
Gimme intz lol: 62
You entered: 62
如果输入非整数,则会收到非描述性过程错误:
[tomalak@andromeda ~]$ ./test2
Enter input please: lol
terminate called after throwing an instance of 'std::runtime_error'
what(): Could not understand your input
Aborted (core dumped)
(N.B。我建议在try
中出现catch
/ main
情况,但我无法打扰。)
但在与老师交谈之后,他解释说,用程序用户应该能够输入int 5或字符串“5”,程序应该能够确定它是int还是字符串并输出它
我无法想象这是对的;它似乎毫无意义,它与引用的任务无关。我相信你误解了这次谈话。