Я новичок в C++, и я пытаюсь понять, как работает in/output в файле. Эта программа должна написать массив целых чисел в файл, затем прочитать его из файла, отсортировать, получить число квадратных целых чисел и затем записать результаты обратно в файл. Однако, когда я пытаюсь скомпилировать его, он сообщает me that "" < < "Операнд запрещен для класса". Может кто-нибудь, пожалуйста, скажите мне, в чем дело? Я пытаюсь избежать использования .get и .put.Чтение/запись массива из файла C++
#include <iostream>
#include <fstream>
using namespace std;
void sorting(int *p);
int squares(int *p);
int main() {
int i, arr[10], *p = &arr[0], sq;
char name[50];
cout << "Give the file's name:";
cin >> name;
ofstream myfile(name, ios::out);
cout << "Give the elements:";
for (i = 0; i < 10; i++)
myfile << *(p + i);
myfile.close();
ifstream myfile(name, ios::in);
for (i = 0; i < 10; i++)
myfile >> *(p + i);
sq = squares(arr);
sorting(arr);
myfile.close();
ofstream myfile(name, ios::app);
for (i = 0; i < 10; i++) {
myfile << "The sorted array is:";
myfile << *(p + i);
}
myfile << "The number of square numbers is: " << sq;
myfile.close();
return 0;
}
void sorting(int *p) {
int temp;
for (int i = 0; i < 9; i++)
for (int j = i + 1; j < 10; j++)
if (*(p + i)>*(p + j)) {
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
int squares(int *p) {
int count = 0;
for (int i = 0; i < 10; i++)
if ((*(p + i) % 2) == 0)
count++;
return count;
}
Добавлен тег C++ для вас. Сделайте что-нибудь в отступе. –
Ну, во-первых, вы несколько раз переопределяете 'myfile'. Вместо этого каждый раз, когда вы используете 'ifstream myfile (name, ios :: in);' добавляете число. Поэтому 'ifstream myfile1 (name, ios :: in);', 'ifstream myfile2 (name, ios :: in);' и 'ifstream myfile3 (name, ios :: in);'. – zero298