0

我知道在这里提出了很多类似的解析问题,但是在搜索了一段时间后,我找不到对我有帮助的答案,所以希望我不会问以前已经回答过一百万次的问题。

我有一个如下所示的文本文件:

1 14 100
3 34 200
2 78 120

第一个数字是身份证号,第二个是年龄,第三个数字是体重。(这些是任意描述)我也有一个看起来像这样的结构:

struct myData{
    int ID;
    int age;
    int weight;
};

在创建了一个 myData 结构数组之后,我如何遍历文本,以便最终将文本文件每一行的每个元素都放在数组的一个索引中?例如,在用文本文件的元素填充数组后,我应该可以说

cout << myData[0].ID << ", " << myData[0].age << ", " << myData[0].weight << "\n";

如果上面代码行中的索引为 2,它应该打印出“1, 14, 100”,并且应该打印出“3, 78, 120”。我尝试过使用 getLine() 或 get() 之类的东西寻找其他人的示例,但我似乎无法掌握它。我希望我包含了有关我的问题的足够信息,以便该站点上的向导可以轻松回答。提前致谢!

4

3 回答 3

4

像这样的东西怎么样:

struct myData
{
    int ID;
    int age;
    int weight;

    // Add constructor, so we can create instances with the data
    myData(int i, int a, int w)
        : ID(i), age(a), weight(w)
        {}
};

std::vector<myData> input;
std::ifstream file("input.txt");

// Read input from file
int id, age, weight;
while (file >> id >> age >> weight)
{
    // Add a new instance in our vector
    input.emplace_back(id, age, weight);

    // Skip over the newline, so next input happens on next line
    std::ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

// Close the file after use
file.close();

// Print all loaded data
for (auto data : input)
{
    cout << "ID: " << data.ID << ", age: " << data.age << ", weight: " << data.weight << '\n';
}
于 2012-10-05T08:32:19.140 回答
1

您可以使用包含文件: #include <fstream> 并简单地做类似的事情

    std::ifstream infile("file.txt");
    int a, b, c;
    while (infile >> a >> b >> c)
    {
        // process (a,b,c)
    }

不要忘记关闭流。

于 2012-10-05T08:29:07.090 回答
0

打开文件并通过它读取所有行:

//Opening File
FILE *trace;
trace=fopen("//path//to//yourfile","r");

// Read the file
myData list[N];
int count=0;
while(!feof(trace)){
    fscanf(trace,"%d %d %d\n", &myData[count].ID, &myData[count].age, &myData[count].weight);
    count++;
}

// now you have an array of size N go through it and print all
for(int i=0; i<count; i++)
    printf("%d %d %d\n", myData[i].ID, myData[i].age, myData[i].weight);
于 2012-10-05T08:30:22.270 回答