让我先说一下我对C ++很陌生,来自Java,想要学习新语言。
我使用ofstream通过循环遍历数组将数组写入文本文件,如下所示。
当我在Notepad ++或Microsoft的记事本中打开文件时,我会看到文件中的所有条目,但是有一个运行时错误导致编辑器崩溃。
我的主要功能
#include <iostream>
#include <string>
#include <limits>
#include <fstream>
using namespace std;
int main() {
//Prototyped functions
int getMenuOption();
int printMenu();
void beginNewVocabularySet();
void printIntro();
int option = getMenuOption();
switch(option){
case 2: beginNewVocabularySet();
}
return 0;
}
调用下面函数的函数
void beginNewVocabularySet(){
int vocabSize = 0;
cout << "Please enter the length of the vocabulary set\n";
cin >> vocabSize;
string vocabArray[vocabSize];
cout << "Please enter a word, then press enter to make the second entry.\n";
for(int i=0; i < vocabSize; i++){
cin >> vocabArray[i];
cout << "Entry number " << i+1 << ". " << vocabArray[i] << "\n";
}
saveVocabSet(vocabArray, vocabSize);
}
将数组写入文件的函数
int saveVocabSet(string vocabArr[], int arrSize){
ofstream vocabFile ("vocabList.txt");
if (vocabFile.is_open()){
for(int i=0; i<=arrSize; i++){
vocabFile<< vocabArr[i] << "\n";
}
vocabFile.close();
}else {
cout << "Unable to open file";
return 1;
}
return 0;
}
答案 0 :(得分:2)
在saveVocabSet
中你正在访问数组越界
for(int i=0; i <= arrSize; i++)
// ~~ should be i < arrSize or i <= arrSize-1
数组索引应该从0到arrSize
- 1