所以,我们只说我正在做一个琐事游戏。我希望能够做出一些可以回答的事情:
cout<<"What is the most radioactive commonly-eaten fruit?"
cin>>Answer
,还可以回答数字问题,例如:
cout<<"How many days does it take for Earth to orbit the Sun?"
cin>>Answer
从那里,我可以对if语句进行编程以处理其余部分,但是string,double和int不允许我回答以便到达那里。
答案 0 :(得分:1)
您可以将Answer
用作字符串,然后可以进行必要的转换以提取所需的值。例如:
include<string
...
std::string Answer;
std::cout<<"What is the most radioactive commonly-eaten fruit?";
std::cin>>Answer;
std::cout<<"How many days does it take for Earth to orbit the Sun?";
std::cin>>Answer;
// So you can use `std::stoi` to convert the value of `Answer` to integer
// Or you can use `std::stod` to convert the value of `Answer` to double
if(std::stoi(Answer) == some_value)
std::cout<<"You are correct ...";
else
std::cout<<"Error!";
有关更多信息,请访问cplusplus.com和stoi的站点。希望对您有所帮助。
答案 1 :(得分:1)
对于此类测验,您可能可以对所有内容使用std::string
。在这种情况下,您还需要将答案也存储为std::string
,然后只需比较字符串即可。对于example,这是一个非常简单的示例:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
int main()
{
std::string answer;
std::vector<std::pair<std::string, std::string>> qas =
{
{ "What is the most radioactive commonly-eaten fruit?", "banana"},
{ "How many days does it take for Earth to orbit the Sun?", "365"}
};
for (auto &&q : qas)
{
std::cout << q.first << " ";
std::cin >> answer;
std::transform(answer.begin(), answer.end(), answer.begin(), [](unsigned char c) -> unsigned char { return std::tolower(c); });
std::cout << ((answer == q.second) ? "Correct!" : "Incorrect!") << std::endl;
}
return 0;
}
您可能希望将答案以小写形式存储,并以std::transform
用户答案存储为小写形式,以便进行字符串比较。但是,如果由于某种原因需要答案的数值,您仍然可以读取字符串,然后将其转换为带有一些可用库函数的数字。
答案 2 :(得分:-2)
您可以根据需要的输入类型使用“联合”或“结构”。如果您希望用户能够用不同的选项回答,那么联合是您的最佳选择。
如果您希望用户填写多个信息,则可以使用结构。