Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.03.2023
Сообщений: 4

Работа с файлом ошибка "различные базовые типы"

08.03.2023, 18:13. Показов 413. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void edit_file(const string& filename)
{
    fstream file(filename, ios::in | ios::out); // открыть файл для чтения и записи
    if (!file.is_open()) // проверить, удалось ли открыть файл
    {
        cout << "Ошибка открытия файла!" << endl;
        return;
    }
    string name, surname;
    int age;
    double gpa;
    cout << "Введите данные о студенте, которого нужно изменить." << endl;
    cout << "Фамилия: ";
    cin >> surname;
    bool found_student = false;
    while (file >> name >> surname >> age >> gpa) // считать данные из файла
    {
        if (surname[0] == 'В' || surname[0] == 'Г' || surname[0] == 'Д') // проверить первую букву фамилии
        {
            if (!found_student && surname[0] == 'В') // выбрать первого студента с фамилией, начинающейся на "В"
            {
                found_student = true;
                cout << "Имя: " << name << ", фамилия: " << surname << ", возраст: " << age << ", средний балл: " << gpa << endl;
                cout << "Введите новые данные о студенте." << endl;
                cout << "Имя: ";
                cin >> name;
                cout << "Возраст: ";
                cin >> age;
                cout << "Средний балл: ";
                cin >> gpa;
                file.seekg(-static_cast<int>(sizeof(name) + sizeof(surname) + sizeof(age) + sizeof(gpa)), ios::cur); // переместить указатель на начало записи
                file << name << " " << surname << " " << age << " " << gpa; // записать новые данные
                break;
            }
        }
    }
    if (!found_student)
    {
        cout << "Студент не найден!" << endl;
    }
    file.close(); // закрыть файл
}
void clear_file(const string& filename)
{
    ofstream file(filename, ios::trunc); // открыть файл для записи, удаляя его содержимое
    if (!file.is_open()) // проверить, удалось ли открыть файл
    {
        cout << "Ошибка открытия файла!" << endl;
        return;
}
file.close(); // закрыть файл
cout << "Файл очищен." << endl;
}
int main()
{
    ifstream file("students.txt"); // открыть файл для чтения
    if (!file.is_open()) // проверить, удалось ли открыть файл
    {
        cout << "Ошибка открытия файла!" << endl;
        return 1;
    }
    string name, surname;
    int age;
    double gpa;
    while (file >> name >> surname >> age >> gpa) // считать данные из файла
    {
        if (surname[0] == 'В' || surname[0] == 'Г' || surname[0] == 'Д') // проверить первую букву фамилии
        {
            cout << "Имя: " << name << ", фамилия: " << surname << ", возраст: " << age << ", средний балл: " << gpa << endl;
        }
    }
    file.close(); // закрыть файл
    ofstream file("students.txt", ios::app); // открыть файл для записи с возможностью добавления данных в конец файла
    if (!file.is_open()) // проверить, удалось ли открыть файл
    {
        cout << "Ошибка открытия файла!" << endl;
        return 1;
    }
    cout << "Введите данные о студентах. Для окончания ввода введите пустую строку вместо имени." << endl;
    while (true)
    {
        cout << "Имя: ";
        getline(cin, name);
        if (name.empty()) // если имя пустое, прекратить ввод данных
        {
            break;
        }
        cout << "Фамилия: ";
        cin >> surname;
        if (surname[0] == 'В' || surname[0] == 'Г' || surname[0] == 'Д') // проверить первую букву фамилии
        {
            cout << "Возраст: ";
            cin >> age;
            cout << "Средний балл: ";
            cin >> gpa;
            file << name << " " << surname << " " << age << " " << gpa << endl; // записать данные в файл
        }
        cin.ignore(); // очистить буфер ввода
    }
    file.close(); // закрыть файл
    edit_file("students.txt"); // вызвать функцию редактирования файла
    clear_file("students.txt"); // вызвать функцию очистки файла
    return 0;
}
выдает ошибку в 100 строке не понимаю почему, подскажите как исправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2023, 18:13
Ответы с готовыми решениями:

Ошибка: переопределение; различные базовые типы
Доброго времени суток! выдает ошибку error C2371: a: переопределение; различные базовые типы. Не знаю как исправить. Нужна помощь! ...

Ошибка C2371 int32_t: переопределение, различные базовые типы
Разбираюсь в чужем проекте. Проект работал в Qt и возможно на Linux. Хочу запустить его в VS2015. От всех ошибок кроме одной смог...

Переопределение; различные базовые типы
Возникла необходимость собрать что то вроде составного регулярного значения. Написал простенький код - с помощью regex_search нахожу...

5
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.03.2023, 18:19
У вас file поток ввода, а вы туда пишете, айайай, низя так .

Добавлено через 2 минуты
Цитата Сообщение от vladhaqq Посмотреть сообщение
выдает ошибку в 100 строке не понимаю почему, подскажите как исправить
Неправда !
Code
1
error: conflicting declaration ‘std::ofstream file’
0
0 / 0 / 0
Регистрация: 08.03.2023
Сообщений: 4
08.03.2023, 18:40  [ТС]
ну да поток ввода я же там и пытаюсь записать, можете подробнее объяснить пожалуйста
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.03.2023, 18:44
У вас объявлено две переменный с одним названием и разными типами = конфликт имен.
Строка 60 и 77.

Поток ввода - читаем.
Поток вывода - пишем.
Потока ввода/вывода - можем читать и писать.
1
0 / 0 / 0
Регистрация: 08.03.2023
Сообщений: 4
08.03.2023, 18:52  [ТС]
понял спасибо
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
08.03.2023, 18:57
vladhaqq, и еще, начинайте исправлять ошибки с верхних полученных от компилятора.
Те что ниже - могут быть следствием верхних.
Как со строкой 100.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2023, 18:57
Помогаю со студенческими работами здесь

Ошибка C2371 переопределение; различные базовые типы
Добрый день Подскажите, пожалуйста, почему выдает ошибку C2371 переопределение; различные базовые типы. Что это за ошибка я знаю, но что...

Ошибка "различные базовые типы" при переопределении класса
Здравствуйте, возникает ошибка при компиляции Серьезность Код Описание Проект Файл Строка Состояние подавления ...

Ошибка C2371 int32_t: переопределение; различные базовые типы
Здравствуйте. Я перешёл на MVS 2015 и при открытии проекта у меня выдаёт следующие ошибки: Скрин - Ошибка C2371 int32_t:...

Переопределение; различные базовые типы
#include &lt;stdio.h&gt; #include &lt;math.h&gt; void main() { int x = 0; scanf(&quot;Введите диапазон: %i&quot;, &amp;x); range(x); } void...

Функция: переопределение; различные базовые типы
При написании консольной игры выдаёт ошибку(в скриншоте). Не могу понять в чем проблема. #include &lt;stdio.h&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru