Пишу код, который должен вывести определенную строку из файла (text.txt), но возникает ошибка "file: переопределение; множественная инициализация" и ">>: недопустимо для class".
Код:
struct element {
char name[str_sz];
int num, temperature;
float viscosity;
};
int main(){
element temp;
cout << "Введите номер строки которую хотите получить: ";
int size, sz=0;
string s;
cin >> size;
ifstream file("text.txt");
while (!file.eof()) {
getline(file, s);
sz++;
}
file.close();
while (size > sz) {
cout << "Введенный номер больше чем строк в файле. Строк в файле: " << sz << endl << "Повторите ввод: ";
cin >> size;
}
ifstream file("text.txt"); // тут ошибка
if (!file.is_open())
cout << "Не удалось открыть файл text.txt" << endl;
for (int i = 0; i < size - 1; ++i)
getline(file, s);
file >> temp.name >> temp.num >> temp.temperature >> temp.viscosity; // тут ошибка
file.close();
cout << temp.name << " " << temp.num << " " << temp.temperature << " " << temp.viscosity << endl;
}
fileс другим именемfile2. Или не вызывайте конструктор второй раз , а запускайте функциюopen. – AlexGlebe Jan 31 '21 at 16:55while (!file.eof()) {- тяжелый вздох, ссылка на то, почему так нельзя - https://ru.stackoverflow.com/q/833980/195342 Когда исправите - поместите текст от первогоifstream file("text.txt");до первого жеfile.close();в фигурные скобки, и ваша проблема уйдет сама собой :) – Harry Jan 31 '21 at 16:58