我正在编写此代码,其中我用文件中的信息填充二维数组。这是文件:
5
Franks,Tom 2 3 8 3 6 3 5
Gates,Bill 8 8 3 0 8 2 0
Jordan,Michael 9 10 4 7 0 0 0
Bush,George 5 6 5 6 5 6 5
Heinke,Lonnie 7 3 8 7 2 5 7
现在数字出现在数组中:data[50][8]
。
我还总计了我所做的每一行中的所有数字。我想将此总数添加到数据数组中,使其看起来像2 3 8 3 6 5 3 30
。我该怎么做呢?
如果你想看到它,这就是我的所有代码:
int main()
{
ifstream fin;
char ch;
int data[50][8];
string names[50];
fin.open("empdata.txt");
int sum = 0;
int numOfNames;
fin >> numOfNames;
for (int i = 0; i < numOfNames; i++) {
fin >> names[i];
for (int j = 0; j < 7; j++) {
fin >> data[i][j];
}
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 7; j++)
{
sum += data[i][j];
}
cout << sum << endl;
sum = 0;
}
}
这是c650帮助我的新代码。它现在没有输出任何东西: int main() {
ifstream fin;
char ch;
int data[50][8];
string names[50];
fin.open("empdata.txt");
int sum = 0;
int numOfNames;
fin >> numOfNames;
for (int i = 0; i < numOfNames; i++) {
fin >> names[i];
data[i][7] = 0;
for (int j = 0; j < 7; j++) {
fin >> data[i][j];
data[i][7] += data[i][j];
}
}
for (int i = 0; i < numOfNames; i++)
{
cout << data[i][7] << endl;
}
system("pause");
return 0;
}
答案 0 :(得分:1)
以下似乎就是您要做的事情。我将指出你所呈现的代码中的缺陷。
这不是最好的方法,但根据OP,存在一些限制,例如无法使用STL。
ffmpeg -i big_buck_bunny_480p_30mb.mp4 -r 1/1 pipe:1
OP遇到了没有输出的问题。 OP,您必须确保您的输入文件具有正确的名称......
答案 1 :(得分:0)
正如我在其他类似帖子中回答的那样:使用结构对记录进行建模。
struct Record
{
std::string last_name;
std::string first_name;
unsigned int grades[MAXIMUM_GRADES];
};
这允许您拥有一组混合类型:
Record student_info[MAXIMUM_STUDENTS];
要更轻松地从文件中读取,您可以在结构中重载operator>>
:
struct Record
{
//...
friend std::istream& operator>>(std::istream& input, Record& r);
};
std::istream& operator>>(std::istream& input, Record r)
{
std::getline(input, r.last_name, ',');
std::getline(input, r.first_name, ' ');
for (unsigned int i = 0; i < MAXIMUM_GRADES; ++i)
{
input >> r.grades[i];
}
return input;
}
这简化了您的输入循环:
for (unsigned int i = 0; i < MAXIMUM_STUDENTS; ++i)
{
my_data_file >> student_info[i];
}
太糟糕了,你无法使用std::vector
。 std::vector
非常适合从文件中读取,尤其是当您不知道文件的大小时。