Ребят что за х**** происходит с c++? - Вопросы по С+

Вопрос Ребят что за х**** происходит с c++?

Регистрация
15 Сен 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
int read(float A[])

{

int i = 0;

FILE* mass = fopen("mass.txt", "r");

while (mass)

{

fscanf_s(mass, "%f", &A);

++i;

}

fclose(mass);

return i;

} Вот часть кода. Внимательно посмотрите на строчку while (mass). Проблема в том что когда я дописываю while (mass.eof()) C++ пишет якобы mass должно соответствовать типу класс а не FILE. Он что е*******?
 
Регистрация
9 Ноя 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Здесь mass является указателем на файл (FILE*), а не объектом класса потока ввода-вывода (ifstream и тп), поэтому метод eof() неприменим, а используем feof().

int read(float A[])
{
int i = 0;
FILE* mass = fopen("mass.txt", "r");
while (!feof(mass))
{
fscanf_s(mass, "%f", &A);
++i;
}
fclose(mass);
return i;
}
 
Регистрация
9 Ноя 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
#include
#include
#include
#include

using namespace std;

vector load(const string& path) {
ifstream inp(path);
vector sequence;
if (inp.is_open()) {
double value;
while (inp >> value) {
sequence.push_back(value);
}
}
return sequence;
}

int main() {
const string path{ "mass.txt" };
auto sequence = load(path);
if (sequence.empty()) {
puts("The container is empty!");
}
else {
cout.setf(ios::fixed);
cout.precision(3);
for (auto value : sequence) {
cout
 
Регистрация
23 Окт 2013
Сообщения
72
Репутация
0
Спасибо
0
Монет
0
Возможно сейчас напишу бред, но тем не менее.
При использовании mass.eof() компилятор пытается интерпретировать mass как объект класса . Однако, mass в вашем коде является указателем на тип FILE, а не объектом класса, как это требуется для использования eof().
 
Регистрация
2 Авг 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Эм, while как бы принимает boolean, а не file и не class.

UPD: Тьфу, я забыл, в C++ же нет никакого boolean.
UPD2: А, да? Значит, с C перепутал.
 
Сверху Снизу