如何在C ++中从.txt文件打印特定的数组条目?

时间:2012-05-28 19:11:38

标签: c++ arrays text-files

首先,我对使用C ++进行编码非常陌生。 所以,我有一个.txt文件,带有名字和数字 - 这是一个例子。

chris 5

tara 7

Sam 13

Joey 15

我想使用此代码检索名称和数字,但是如何打印特定的数组条目而不仅仅是变量名称和数字(我希望它在屏幕上显示名称和数字)?< / p>

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() {
string name;
int number;
struct sEntry
{
    std::string name;
    int number;
};
sEntry entries[256];
std::ifstream fin("input.txt"); // opens the text file
int nb_entries; // Keeps track of the number of entries read.

for (nb_entries = 0; fin.good() && nb_entries < 256;  nb_entries++) // Keep going until we hit the end of the file:
{
    fin >> entries[nb_entries].name;
    fin >> entries[nb_entries].number;
    cout << "Here, "<< name <<" is name.\n";
    cout << "Here, "<< number <<" is number.\n";
}
}

2 个答案:

答案 0 :(得分:1)

您应该使用C ++向量(可以动态更改大小),而不是使用sEntry的纯C数组。然后在循环中创建一个新的sEntry实例(可以使用fin.eof()作为终止条件)并使用运算符&gt;&gt;()来分配值。然后使用push_back()将sEntry实例添加到向量中。 您需要使用sEntry.name,sEntry.number字段在屏幕上输出,代码中显示的名称和编号将不会收到值。

#include <vector>
#include <string>
#include <iostream>

struct sEntry
{
    std::string name;
    int number;
};

int main() {
    string name;
    int number;
    std::vector<sEntry> entries;
    std::ifstream fin("input.txt"); // opens the text file
    // int nb_entries; // Keeps track of the number of entries read. -> not necessary, use entries.size()

    while(!fin.eof()) // Keep going until we hit the end of the file:
    {
        sEntry entry;
        fin >> entry.name;
        fin >> entry.number;
        cout << "Here, "<< entry.name <<" is name.\n";
        cout << "Here, "<< entry.number <<" is number.\n";
        entries.push_back(entry);
    }
}

答案 1 :(得分:1)

你写的是namenumber,但这些不是你读过的变量。你已经读过数组条目了。

让它尽可能简单地工作只需将cout行更改为:

cout << "Here, " << entries[nb_entries].name << " is name.\n";
cout << "Here, " << entries[nb_entries].number << " is number.\n";

不需要std :: vector,你怎么做也没什么不对。