首先,我对使用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";
}
}
答案 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)
你写的是name
和number
,但这些不是你读过的变量。你已经读过数组条目了。
让它尽可能简单地工作只需将cout
行更改为:
cout << "Here, " << entries[nb_entries].name << " is name.\n";
cout << "Here, " << entries[nb_entries].number << " is number.\n";
不需要std :: vector,你怎么做也没什么不对。