根据用户输入创建结构

creating structres based on the users input

本文关键字:创建 结构 输入 用户      更新时间:2023-10-16

我想知道是否有一种方法可以根据用户的输入创建不同的结构。例如,考虑以下代码

#include <iostream>
#include <algorithm>
#include <string>
#include <iomanip>
#include <limits>
#include <stdio.h>
#include <sstream>

using namespace std;
using std::stringstream;
struct rootset {
  double totSize;
  const char *rStrtPtr;
  const char *rEndPtr;
  struct generations {
    double totSize;
    const char *genStrtPtr;
    const char *genEndPtr; 
    int numOfGen;
    string genName;
    struct object {
      double objSize;
      const char *objStrtPtr;
      const char *objEndPtr;
      string id;
      char markBit;
      char objPtr;

      struct freeList {
    double freeSpace;
    int flNumb; 
      };
    };
  } generation;
};
int main()
{
  int gen =0;
  cin >> gen;
  rootset* pRootSet = (rootset*)malloc(1200);
  for( i=0; i<gen; i++) {
    stringstream out;
    out << i;
   string s = out.str();
   string foo = "generation" + s;
   rootset::generations foo;
  }
}

这里用户输入一个数字。在此基础上,我想创建许多结构。但我不能这样做。请帮助。我意识到foo是字符串类型,我不能使用这个答案。

如果可以避免的话,您可能不希望使用 malloc(在这种情况下,您可以很容易地做到这一点)。

相反,我将使用std::vector,它将给出如下代码:
int gen;
if (cin >> gen) {
    std::vector<rootset> rootsets(gen);
    // code that uses `rootsets` goes here.
}

这将分配gen不同rootset对象的向量(大致类似于数组)。你也可以用malloc做到这一点,但相比之下,它是笨拙和困难的(如果你试图使它异常安全,那就会变得更加笨拙和困难——在你完成之前,你几乎重新发明了std::vector)。