C ++程序文件输出崩溃

时间:2014-11-03 19:51:19

标签: c++

我正在尝试编写一个程序,该程序获取一个名称列表,然后将其输出到.txt文件。

这是我的代码:

void setNames() // Set method that takes a series of names.
{
  nameTags = new char*[numberOfNames];
  for (int i=0; i<=numberOfNames; i++)
  {
    nameTags[i] = new char[128];
    cout << "Input information for name " << i << ": " << "\n";
    cin.getline(namesSet, sizeof(namesSet));
    strcpy(nameTags[i], namesSet);
  }
}

ostream& operator<< (ostream& ostr, const Names& names) // <<operator
{
  ostr << "#############################" << endl;
  ostr << names.getAuthor();
  ostr << names.getNumberOfNames();
  for(int i=0; i<=names.numberOfNames; i++)
  {
    ostr << names.nameTags [i] << "\n";
  }
  return ostr;
}

现在我的程序工作正常并打印到终端。但是,当我尝试在ofstream崩溃后尝试运行它并且不是很好。例如,如果我想输入10个名称,并将其保存到磁盘,则会崩溃。

ofstream outputfile (names.getFileName());
if(outputfile.is_open())
{
  outputfile << names; // I believe I go wrong here.
  outputfile.close();
}

我是C ++的新手,如果有人可以帮我解决问题,我将非常感激。我花了好几个小时试图解决它。

1 个答案:

答案 0 :(得分:1)

问题在于声明:

for (int i=0; i<=numberOfNames; i++)

相反它应该是

for (int i=0; i < numberOfNames; i++)

同样在流插入运算符中,它应该是:

for(int i=0; i < names.numberOfNames; i++)