我想寫一個程序,需要一個名稱列表,然後將其輸出到.txt
文件。C++程序崩潰的文件輸出
這是我的代碼:
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++的新手,如果有人能幫我解決問題,我將非常感激。我一直花費數小時試圖修復它。
使用'的std :: string '和'std :: vector'而不是動態分配的char *數組* –
Borgleader
2014-11-03 19:55:16
如果'getline' f然後你的緩衝區都將充滿垃圾,這可能會導致問題 – 2014-11-03 20:57:25
@MattMcNabb我認爲這可能是導致錯誤的getline。我已經聲明'namesSet'爲'char namesSet [100]' – user4167396 2014-11-03 22:19:54