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

Проблема с getline и структурой

15.04.2021, 21:34. Показов 2262. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Столкнулся со странной проблемой, решения в гугле не нашёл. Сначала думал это баг IntelliSense в Visual Studio, создал новый проект и ошибка сохранилась. В общем, есть такая структура, в которой ещё структуры:

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
struct SportsRecords
{
    string surname;
    string athleteGender;
    string sportType;
    double recordValue;
 
    struct Date
    {
        int day;
        int month;
        int year;
 
        void print_date()
        {
            cout << day << "." << month << "." << year << endl;
        }
 
    } value;
 
    struct RecordType
    {
        string recordType;
    } type;
};
Её нужно постепенно заполнять в файл, написал такую функцию и не дописав столкнулся с проблемой

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void write_struct(const SportsRecords records[], int numOfRecords)
{
    ofstream fout("RecordsDataBase.txt");
 
    for (int i = 0; i < numOfRecords; i++)
    {
        cout << "Заполнение структуры:" << endl << endl;
 
        cout << "Введите фамилию участника:" << endl;
        getline(cin, records[i].surname); // в этом месте подсвечивается getline
    }
 
    fout.close();
}
Код в main:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите количество рекордов:" << endl;
 
    int numOfRecords;
    cin >> numOfRecords;
    cin.ignore();
 
    SportsRecords* records = new SportsRecords[numOfRecords];
 
    delete [] records;
 
    return 0;
}
Проблема в том, что код не компилируется, IntelliSense подсвечивает getline в функции write_struct и пишет такую ошибку:
(E0304) Отсутствуют экземпляры перегруженная функция, соответствующие списку аргументов. Типы аргументов: (std::istream, const std::string)

Пытаюсь понять в чём проблема и как то не выходит.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2021, 21:34
Ответы с готовыми решениями:

Проблема с getline()
Реализовал функцию ввода строки в структуру с помощю getline(). Проблема в том, что считывается 2 строка, вместо первой. (Запись name...

Проблема с getline()
Суть программы: Пользователь с помощью програмки должен создать файл, в который будут записаны 10 чисел, потом вернуться на главный экран...

Проблема с getline в цикле while
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;ctype.h&gt; void rmm(char* spatny) { char* dobry = spatny; ...

4
Она кричала хватит
 Аватар для live_4_ever
41 / 42 / 7
Регистрация: 21.05.2019
Сообщений: 112
15.04.2021, 21:54
Лучший ответ Сообщение было отмечено Devvvveloper как решение

Решение

Для начала вам нужна подключить библиотеки для работы с файлами и строками. Соответственно:
C++
1
2
#include <string>
#include <fstream>
Далее в параметрах функции write_struct надо убрать const: void write_struct(SportsRecords records[], int numOfRecords). Потом вам надо ее вызвать в main.
2
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
15.04.2021, 21:57
Цитата Сообщение от Devvvveloper Посмотреть сообщение
Отсутствуют экземпляры перегруженная функция, соответствующие списку аргументов. Типы аргументов: (std::istream, const std::string)
Ну так в сообщении об ошибке все ясно написано. records[i].surname - это константная строка. Почему вы пытаетесь модифицировать константную строку?

И что это вообще за странная функция, которая называется write_struct, но при этом занимается не записью, а чтением структур? И что в ней делает некий ofstream fout? Зачем вы объявили эту переменную, которая нигде не используется?
1
Она кричала хватит
 Аватар для live_4_ever
41 / 42 / 7
Регистрация: 21.05.2019
Сообщений: 112
15.04.2021, 22:03
TheCalligrapher, дальше он сам должен разобраться
0
0 / 0 / 0
Регистрация: 20.09.2020
Сообщений: 21
16.04.2021, 00:22  [ТС]
с write_struct просто название неудачное, а fout объявил заранее, но интересовало меня не это, человек выше объяснил, но спасибо и вам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2021, 00:22
Помогаю со студенческими работами здесь

Проблема с cin.getline();
Есть вопрос по поводу использования cin.getline() после cin: cin&gt;&gt; n; char c; cin.getline(c, buf); Почему можно ввести...

Проблема со структурой
После записи в поле структуры, это же поле структуры пустое Вот код: ion.h: using namespace std; struct Ion_ret {

K&R getline В чем проблема?
Второе издание, глава 1.9 вот код примера: #include&lt;stdio.h&gt; #define MAXLINE 1000 int getline(char line,int maxline); void...

проблема со структурой и функциями
Задание: 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из...

Проблема с динамической структурой
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; struct Node { int num; char first; char final; int...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru