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

Что-то странное с getline

09.05.2018, 05:32. Показов 1399. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу телефонную книгу и недавно столкнулся с проблемой. Getline не хочет считывать строку. Он считывает что-то иное.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int AddPerson ()   // Добавляем пользователя !!!Здесь, возможно, и есть ошибка
{
    //ригулируем загруженноть массива Person
    if (total < 10)
    {
        cout << "Please, full this form: " << endl;
        cout << "Name: ";
        getline(cin, person[total].name, '\n');
        cout << "Phone number: ";
        getline(cin, person[total].number, '\n');
        cout << "Information: ";
        getline(cin, person[total].info);
        person[total].index = true;
    }
    else cout << "Sorry. Your diary is full.\n";
 
    total++;
}
Если нужна полная картина мира, то ниже представлен файл:

Яндекс.диск
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2018, 05:32
Ответы с готовыми решениями:

Странное поведение getline
В программе в двух местах используеться getline. В первом случае все супер : string ownerName; ...

Что означает in.getline?
Объясните, пожалуйста. У меня текст , в каждой строчке 50 символов Хочу разобраться по программе...

Что делает функция getline
Можете мне объяснить что делать функция getline и если не сложно превисти пример ее использования

Как определить, что в getline пустая строка?
Если в getline пустая строка std::getline(cin, name); if(name == ??){} В if с чем надо...

4
2862 / 2009 / 988
Регистрация: 21.12.2010
Сообщений: 3,715
Записей в блоге: 15
09.05.2018, 06:52 2
Лучший ответ Сообщение было отмечено CyberHazker как решение

Решение

C++
1
2
cin >> choose;
std::cin.ignore(1);
1
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 6
09.05.2018, 09:00  [ТС] 3
Спасибо большое! Все заработало
Но не могли бы вы объяснить почему так происходит? Просто я бы хотел знать все нюансы.
Буду очень благодарен!
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.05.2018, 10:46 4
Лучший ответ Сообщение было отмечено CyberHazker как решение

Решение

Цитата Сообщение от CyberHazker Посмотреть сообщение
Но не могли бы вы объяснить почему так происходит?
Потому что cin>> читает не всю строку, а ровно один символ/число/слово. Потом приходит getline, видит огрызок недочитанной строки и решает что его то вернуть и надо. ignore(100500,'\n') же прочитывает и отбрасывает все что осталось от огрызка.
0
0 / 0 / 0
Регистрация: 29.11.2017
Сообщений: 6
09.05.2018, 11:22  [ТС] 5
Renji, Спасибо большое! Учту при дальнейшем обучении
0
09.05.2018, 11:22
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2018, 11:22
Помогаю со студенческими работами здесь

Отличие getline() от cin.getline()
Чем отличается getline() от cin.getline() ?

Что делает цикл "while(cin.getline(buf,l_buf))" ?
не могу понять,что делает цикл:while(cin.getline(buf,l_buf))-это по сути проверка на ввод строки?...

Объясните разницу между "cin.getline" и "std::getline"
string a; cin.getline(a); getline(cin, a);в чем разница между &quot;cin.getline(a);&quot; и &quot;getline(cin,...

Getline() "съедает" следующий getline()
Всем привет! Пишу небольшое консольное приложение. Идея такова: в карточке пользователя библиотеки...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru