我如何编程可以是数字或单词的输入(C ++)

时间:2018-07-21 08:12:06

标签: c++

所以,我们只说我正在做一个琐事游戏。我希望能够做出一些可以回答的事情:

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不允许我回答以便到达那里。

3 个答案:

答案 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.comstoi的站点。希望对您有所帮助。

答案 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)

您可以根据需要的输入类型使用“联合”或“结构”。如果您希望用户能够用不同的选项回答,那么联合是您的最佳选择。

如果您希望用户填写多个信息,则可以使用结构

请点击链接查看示例: https://en.cppreference.com/w/cpp/language/union