我正在尝试编写一个程序,该程序获取一个名称列表,然后将其输出到.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 ++的新手,如果有人可以帮我解决问题,我将非常感激。我花了好几个小时试图解决它。
答案 0 :(得分:1)
问题在于声明:
for (int i=0; i<=numberOfNames; i++)
相反它应该是
for (int i=0; i < numberOfNames; i++)
同样在流插入运算符中,它应该是:
for(int i=0; i < names.numberOfNames; i++)