程序不会打印我想要的所有内容

时间:2016-02-15 00:49:54

标签: c++ output

我正在编写一个程序,该程序应该将有关不同视频的信息作为输入,然后将所有这些信息打印出来(这个输出应该被排序,但我还没有达到那个部分)。我的问题是,当我结束输入时,它不会打印每个视频的信息,而只打印最后一个视频的信息。

我是编程新手,根本无法解决这个问题。

这是我的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;
}

1 个答案:

答案 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循环,您的变量将仅包含最后读取的值,并且所有视频将具有相同的信息。