【问题标题】:How can get the size of the data type which is inside the string?如何获取字符串内部数据类型的大小?
【发布时间】:2019-07-03 18:38:41
【问题描述】:

如何获取字符串中的数据类型大小

字符串 a = "int"

字符串 b = "浮动"

我想获取 int 和 float 数据类型的大小...

【问题讨论】:

  • 为什么要标记多种语言?
  • 哇,我认为不可能,至少在没有大量工作的情况下是不可能的。但是必须问一个问题,为什么你认为你需要这样做?无论您要解决什么更大的问题,都有更好的方法。
  • C# 和 C++ 是两种截然不同的语言,两者的答案(如果有的话)会有所不同。
  • 除非你打算使用很多类型,否则为了简单起见,我会选择一个简单的 switch 或一系列 if 语句。
  • 对于 C++,您可以考虑使用 std::map。使用字符串作为索引,使用 size_t 的值。即 myMap.insert (std::make_pair("float", sizeof(float))); myMap.insert(std::make_pair("int", size(int)));等等。查找同样容易。

标签: c# c++ c++11 visual-c++


【解决方案1】:

您正在尝试将字符串转换为可变数据类型,然后获取其大小。

在 C++ 中不可能做到这一点,因为没有语言支持这种转换(请参阅 Convert string to variable name or variable type)。

但是,您可以按照 TmCrafz 在之前的答案中提出的 if-else 结构进行操作。

【讨论】:

    【解决方案2】:

    在 c++ 中,当您只使用原始类型时,您可以使用 if 和 else:

    std::size_t getSizeOfType(std::string& str) {
        if (str == "int") {
            return sizeof(int);
        }
        else if (str == "float") {
            return sizeof(float);
        }
        return 0;
    }
    

    您可以对每种原始类型都这样做。

    【讨论】:

      【解决方案3】:

      当你使用字符串时,你可以使用来访问大小,

      string a = "int";
      System.out.println("length: " + a.length);
      

      如果不是您需要的,我没有正确理解您的问题。

      【讨论】:

      • 我认为 OP 是在询问如何获取字符串中指示的实际类型的大小,而不是字符串本身的长度。
      猜你喜欢
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2015-01-24
      • 2022-01-10
      • 2018-05-25
      • 2017-10-03
      • 2018-09-08
      • 2018-11-05
      相关资源
      最近更新 更多