繁体   English   中英

需要帮助将信息从文本文件输入到使用递归的结构?

[英]Need help inputting info from text file to structure using recursion?

我是 C++ 和一般编程的新手,所以请耐心等待我尝试解释自己。

我需要将信息从 a.txt 文件输入到结构中。 文本文件中的信息如下:

11 12 13

莎莉

10 11 12

...

该结构几乎需要包含名称、a(在案例 1、11 中)、b(在案例 1、12 中)和 c(在案例 1、13 中)。 我希望递归地执行此操作,以便遍历每个名称和 a、b 和 c。 我真的不知道从哪里开始,我真的只是在寻找一些指导。

我在想也许将名称放入一个 2D 字符数组,a、b 和 c 放入另一个 3D 字符数组? 但我不确定该怎么做,或者这样做有什么目的。

感谢您的任何帮助!

好的,这就是我所拥有的。 它处于非常早期的阶段,但它是一些东西。

#include<iostream>
#include<fstream>
using namespace std;

const int max_names=100, a=100, b=100, c=100;
char names[max_names];
int num1[a];
int num2[b];
int num3[c];


int main()
{
    ifstream inFile;
    inFile.open("data.txt");
    while(!inFile.eof())
    {
        for(int i=0; i<max_names; i++)
        {
                inFile>>names[i]>>num1[i]>>num2[i]>>num3[i];
        }
    }
    return 0;
}

struct Person
{
    char names[max_names];
    int num1[a];
    int num2[b];
    int num3[c];
}

编辑:虽然我不想使用递归/结构,但我必须使用 class。 此外,在进一步查看我应该做什么之后,我需要创建一个结构数组。 这很难做到吗? 我现在正在处理我认为的一些代码,但我可能会完全离开。

我需要使用结构标识符。 像“结构人”

编辑 2:是的,递归,是结构,没有迭代,没有 class。 它必须使用递归和结构。

我会考虑使用ifstream在基本循环中从文件中读取。 我认为递归不是这项工作的正确工具。

#include <iostream>
#include <fstream>
using namespace std;

int main () {    
  ifstream ifs("test.txt");

  while (ifs.good()) {
    struct foo;
    ifs >> foo.name >> foo.a >> foo.b >> foo.c;
  }

  ifs.close();    
  return 0;
}

这将允许任何空格分隔nameabc 如果您想更加小心空格(例如允许名称中的空格,您可以使用peek()检查新行或切换到fscanf之类的内容。

看起来你想定义一个class Person

class Person {
  std::string name_;
  int numbers[3]; // Is this always 3 ? 
public:
  Person(std::istream& input)
  {
    std::getline(input, name_); // First line is name.
    input >> numbers[0] >> numbers[1] >> numbers[2];
    std::ignore(INT_MAX, '\n'); // Eat newline.
    // Can you 100% rely on the input being correct? 
    // If not, you'll need to throw an exception: if (input.fail()) throw ...
  }

  std::string const& name() const { return name_; }
  int a() const { return numbers[0]; }
  int b() const { return numbers[1]; }
  int c() const { return numbers[2]; }
};

使用此 class,您可以从 IOstream 构造 Persons,直到遇到 EOF。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM