我是 C++ 和一般编程的新手,所以在我尝试 self 解释时请耐心等待。
我需要将信息从 .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];
}
编辑:虽然我不想使用递归/结构,但我必须在类里面使用。此外,在进一步查看我应该做什么时,我需要创建一个结构数组。这很难做到吗?我现在正在编写我认为是一些代码的东西,但我可能会完全离开。
我需要使用结构标识符。像“结构人”
编辑 2:是的,递归,是结构,没有迭代,没有类。它必须使用递归和结构。
最佳答案
我会考虑使用 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
的内容。
关于c++ - 需要帮助使用递归将文本文件中的信息输入到结构中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814370/