[英]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;
}
这将允许任何空格分隔name
、 a
、 b
和c
。 如果您想更加小心空格(例如允许名称中的空格,您可以使用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.