Здравствуйте, пользователи Stack Overflow!
У меня проблема с программой, которую я пытаюсь написать на C ++.Каждый раз, когда я компилирую свой код, я получаю следующие ошибки:
FCS2Phase.cpp: In function `int main(int, char**)':
FCS2Phase.cpp:47:15: error: request for member `open' in `userfile', which is of non-class type `std::ifstream()'
FCS2Phase.cpp:48:22: error: request for member `eof' in `userfile', which is of non-class type `std::ifstream()'
FCS2Phase.cpp:50:39: error: cannot convert `std::ifstream (*)()' to `char**' for argument `1' to `ssize_t getline(char**, size_t*, FILE*)'
FCS2Phase.cpp:52:49: error: cannot convert `std::ifstream (*)()' to `char**' for argument `1' to `ssize_t getline(char**, size_t*, FILE*)'
FCS2Phase.cpp:54:14: error: request for member `close' in `userfile', which is of non-class type `std::ifstream()'
Будучи настолько новичком в C ++, я не слишком уверен, что эта ошибка пытается сказать мне, неправильно с моим использованием ifstream.Я уверен, что это должно быть что-то глупо простое, но я не могу понять это :( Я пробовал некоторые отчаянные вещи, такие как разыменование userFile, вызывая его как (userFile *). Open и также userGFile-> open. Оба приводят к одним и тем же ошибкам.
Следующие строки кода, выполняемые следующим образом:
int count = 0;
userfile.open(fileName.c_str(), ios::in | ios::binary);
while (!userfile.eof()) {
if (count < arrSize)
getline(userfile, a[count]);
else if (count - arrSize < arrSize)
getline(userfile, b[count - arrSize]);
}
userfile.close();
Вся программа выглядит следующим образом:
/*
* File: FCS2Phase.cpp
* Author: Mark
*
* Created on October 17, 2011, 11:28 AM
*/
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <time.h>
#include <string>
using namespace std;
void randInput(int size, string fileName);
/*
*
*/
int main(int argc, char** argv) {
string fileName;
char randYN;
int arrSize;
cout << "(This program assumes file is in program root directory and arrays are equal size)";
cout << "\nPlease insert the file name: ";
getline(cin, fileName);
ifstream userfile();
cout << "How many numbers are stored in the arrays?: ";
cin >> arrSize;
double a[arrSize];
double b[arrSize];
cout << "Create Randomized File? (Y/N): ";
cin >> randYN;
if (toupper(randYN) == 'Y')
randInput(arrSize * 2, fileName);
int count = 0;
userfile.open(fileName.c_str(), ios::in | ios::binary);
while (!userfile.eof()) {
if (count < arrSize)
getline(userfile, a[count]);
else if (count - arrSize < arrSize)
getline(userfile, b[count - arrSize]);
}
userfile.close();
cout << "The values inputted were: " << "\n\tArray #1: ";
for (int i = 0; i < arrSize; i++) {
cout << a[i] << "\t";
}
cout << "\n\tArray #2: ";
for (int i = 0; i < arrSize; i++) {
cout << b[i] << "\t";
}
return 0;
}
void randInput(int size, string fileName) {
const double MIN = 0;
const double MAX = 100;
double num;
ofstream file(fileName.c_str());
if (file.is_open()) {
for (int i = 0; i < size; i++) {
srandom(time(NULL));
num = (double) rand() / RAND_MAX;
file << MIN + num * (MAX - MIN) << "\n";
}
file.close();
}
}
Спасибо за любую помощь!