我正在编写一个程序,该程序应该将有关不同视频的信息作为输入,然后将所有这些信息打印出来(这个输出应该被排序,但我还没有达到那个部分)。我的问题是,当我结束输入时,它不会打印每个视频的信息,而只打印最后一个视频的信息。
我是编程新手,根本无法解决这个问题。
这是我的main.cpp文件:
#include<iostream>
using namespace std;
#include "video.h"
int main() {
const int MAX = 100;
Video *video[MAX]; //up to 100 videos
for(int l = 0; l < MAX; l++)
{
video[l] = NULL;
}
string title;
string url;
string desc;
string sorting;
float length;
int rate;
cout << "What sorting method would you like to use?" << endl;
getline(cin, sorting);
cout << "Enter the title, the URL, a comment, the length, and a rating for each video" << endl;
while(getline(cin, title))
{
getline(cin, url);
getline(cin, desc);
cin >> length;
cin >> rate;
cin.ignore();
}
for(int k = 0; k < MAX; k++)
{
video[k] = new Video(title, url, desc, length, rate);
}
video[MAX-1]->print();
return 0; }
这是我的video.cpp文件:
#include "video.h"
#include<iostream>
using namespace std;
Video::Video(string title, string url, string desc, float length, int rate)
: m_title(title), m_url(url), m_desc(desc), m_length(length), m_rate(rate)
{
}
void Video::print() {
cout << m_title << ", " << m_url << ", " << m_desc << ", " << m_length;
cout << ", ";
for(int y=0; y < m_rate; y++)
{
cout << "*";
}
cout << endl;
}
答案 0 :(得分:0)
您的专线video[MAX-1]->print();
说:
“使用数字MAX-1(最后一个元素)获取视频元素并调用其print()
- 函数。”
如果您想要打印每个视频,您需要另一个for循环,就像填充阵列时一样。
顺便说一下:你用相同的信息填充数组,这就是你想要的吗?
输入的编辑使用如下内容:
int k=0;
while(getline(cin, title))
{
getline(cin, url);
getline(cin, desc);
cin >> length;
cin >> rate;
cin.ignore();
video[k] = new Video(title, url, desc, length, rate);
k++;
}
如果您首先执行while循环,您的变量将仅包含最后读取的值,并且所有视频将具有相同的信息。