使用.open()成员函数C++的ifstream数组的错误访问代码
bad access code with array of ifstream using .open() member function C++
我有一个相当简单的任务,我有两个有50个名字的文本文件,我向用户查询文本文件"女孩的名字"或"男孩的名字"和一个名字,然后程序检查用户输入的名字是否在他们选择的文件中。我想我基本上已经得到了,但当我试图打开第二个文件时,我得到了一个错误的访问代码。我读过关于内存分配的问题,我认为这是我的代码的问题,但答案超出了我的理解水平,所以我陷入了困境。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// Declare Variables
ifstream inFile[1]; // male and female file streams
int inFileArrayVar = 0; // allows switching from female and male file streams
string gender;
string name[50];
string inputName;
int popular = 0;
bool inputCondition = 1;
bool progLoop = 1;
// Welcome Message
cout << "*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o" << 'n'
<< " WELCOME TO THE GENDER BINARY MACHINE" << 'n'
<< "*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o" << 'n' << 'n'
<< "Enter a name and see if it is one of the most popular Canadian female or male names in 2015. " << 'n' << 'n';
// Open Files
inFile[0].open("GirlsNamesCanada2015.txt");
inFile[1].open("BoysNamesCanada2015.txt");
// User Query
while (inputCondition == 1){
cout << "Choose to query either the male or female database by entering 'f' or 'm' " << 'n';
cin >> gender;
if (gender == "f") {
cout << "You have selected the female name database. Enter the name you'd like to search: " << 'n';
inFileArrayVar = 0;
inputCondition = 0;
}
else if (gender == "m"){
cout << "You have selected the male name database. Enter the name you'd like to search: " << 'n';
inFileArrayVar = 1;
inputCondition = 0;
}
else
inputCondition = 1;
}
while (progLoop == 1){
cin >> inputName;
for (int i = 0; i < 50; i++) {
inFile[inFileArrayVar] >> name[i];
if (inputName.compare(name[i]) == 0) {
popular = 1;
cout << inputName << " was one of the most popular names in 2015." << 'n' << 'n';
i = 50;
}
}
if (popular == 0){
cout << inputName << " was not one of the most popular names is 2015." << 'n' << 'n';
}
cout << "If you want to contine, enter either 'f' or 'm', otherwise enter any other character. " << 'n';
cin >> gender;
if (gender == "f"){
cout << "You have selected the female name database. Enter the name you'd like to search: " << 'n';
inFileArrayVar = 0;
}
else if (gender == "m"){
inFileArrayVar = 1;
cout << "You have selected the male name database. Enter the name you'd like to search: " << 'n';
}
else
progLoop = 0;
}
cout << "merci d'avoir choisi le GENDER BINARY MACHINE ******* pce out ******** " << 'n' << 'n';
return 0;
}
ifstream inFile[1]; // male and female file streams
在这里,您声明了一个带有一个元素的数组。这个数组有一个元素。这就是[1]的意思。
inFile[0].open("GirlsNamesCanada2015.txt");
inFile[1].open("BoysNamesCanada2015.txt");
然后尝试访问数组中的元素#0和元素#1,这是一个元素数组中的第一个和第二个元素。可能出了什么问题?
当您声明数组时:
type array[n];
这意味着数组包含元素#0到元素#n-1。
相关文章:
- 如何在 c++ 中读取/写入无符号数组到 ifstream/ostream?
- 从 ifstream 读取 int 到 2-D 动态数组
- 将 ifstream 文件和每一行读取到数组中
- 需要根据读取的数据类型将ifstream提取到单独的数组中
- 当 ifstream 将字符读入 2D 数组时,会出现奇怪的字符
- ifstream不使用C 中的数组检索数据
- 动态分配的数组在输出时丢失 ifstream 数据
- C++ 如何处理 ifstream 和 char 数组的">>"操作?
- 尝试在c++中将文本文件(ifstream)转换为2D字符数组
- ifstream get string的字符串进入数组
- 如何创建一个ifstream对象的数组,以及如何使用编号的文本文件填充该数组
- 使用 ifstream::operator>> 从 CSV 文件加载数组
- 尝试将数据保存到数组中时出现ifstream运行时错误
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- 使用.open()成员函数C++的ifstream数组的错误访问代码
- 带有字符数组的 ifstream
- ifstream get() 不填充字符数组
- 使用 ifstream 从文件中读取数据并将其存储在数组中
- C++从ifstream创建一个可变大小的数组
- 我可以在 c++ 中有一个 ifstream 数组吗?