C++ 从用户那里获取未知数据类型输入



我是C++新手,我正在尝试创建一个程序,该程序从用户那里获取未知数据类型输入并将其存储在变量中。我正在使用可视化工作室进行编程,代码不断生成错误消息:E0304,LNK2019和LNK1120。

#include "stdafx.h"
#include <iostream>
template <typename T>
T dataEntered() {
T data;
std::cout << "Enter Data" << std::endl;
std::cin >> data;
return data;
}
int main()
{
    auto data = dataEntered();
    std::cout << sizeof(data) << std::endl;
    return 0;
}`

Template 不是解决方案,除非你以这种方式使用它:

auto data1 = dataEntered<char>();
auto data2 = dataEntered<int>();
std::cout << sizeof(data1) << std::endl;
std::cout << sizeof(data2) << std::endl;

您应该传递类型参数,以便在编译时知道它。

如果您直到run-time才知道数据,我建议您按string读取数据,然后编写一个function根据需要对其进行解析

模板和 auto 在编译时推导,其中 auto 基本上更改为从初始化值推导的类型,并为模板参数中使用的每个类型生成模板化版本的版本。

如果需要对输入执行操作,请在读取输入之前确定输入的类型。您也可以将其输入到字符串中并在以后解析。

如果不需要解析输入,只需输入到字符串中即可。

例如,如果输入的第一个字符是数字,则可能是数字。

我的代码:

#include <iostream>
#include <string>
#include <cctype>
int main()
{
    if(std::isdigit(static_cast<unsigned char>(std::cin.peek())))
    {
        //the input is a number
        int num;
        std::cin >> num;
        //do stuff with num
    }
    else
    {
        //input is something else
        std::string str;
        std::cin >> str;
        //do stuff with str;
    }
}

相关内容

  • 没有找到相关文章

最新更新