Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
10 / 10 / 8
Регистрация: 05.02.2014
Сообщений: 124

Не работает ни cin.Get(), ни cin.Getline()

26.08.2014, 23:00. Показов 7062. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "windows.h"
#include "string.h"
using namespace::std;
const int LEN = 80;       // максимальная длина имени
class employee            // некий сотрудник
{
private:
    char name[LEN];     // имя сотрудника
    unsigned long number; // номер сотрудника
public:
    void getdata()
    {
        cout << "\n  Введите фамилию: "; cin >> name;
        OemToCharA((LPCSTR)name, (LPSTR)name);
        cout << "  Введите номер: ";  cin >> number;
    }
    void putdata() const
    {
        cout << "\n  Фамилия: " << name;
        cout << "\n  Номер: " << number;
    }
};
class manager : private employee /*private student */// менеджер
{
private:
    char title[LEN];    // должность сотрудника
    double dues;          // сумма взносов в гольф-клуб
public:
    void getdata()
    {
        employee::getdata();
        cout << "  Введите должность: "; 
//cin.getline(title, LEN);
//cin.get(title, LEN);
        cin >> title;
        OemToCharA((LPCSTR)title, (LPSTR)title);
        cout << "  Введите сумму взносов в гольф-клуб: "; cin >> dues;
    }
    void putdata() const
    {
        employee::putdata();
        cout << "\n  Должность: " << title;
        cout << "\n  Сумма взносов в гольф-клуб: " << dues;
    }
};
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "Rus");
    manager ob;
    ob.getdata();
    ob.putdata();
    _getch();
    return 0;
}
Не понимаю, почему не работает ни cin.get(), ни cin.getline(). Хочу ввести два слова через пробел. Как только до cin.get(title, LEN) доходит, сразу идет вывод и выводит мусор, а cin.getline(title, LEN) тупо пропускает ввод.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2014, 23:00
Ответы с готовыми решениями:

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
26.08.2014, 23:08
Цитата Сообщение от Gygocopter Посмотреть сообщение
Хочу ввести два слова через пробел.
C++
1
2
std::wstring first, second;
std::wcin>>first>>second;
0
10 / 10 / 8
Регистрация: 05.02.2014
Сообщений: 124
26.08.2014, 23:46  [ТС]
Написал неточно. Почему не работает cin.get(), cin,getline()? Как исправить?
Vourhey, по-русски вводишь и мусор получается.
И два слова в один массив title[LEN], через пробел, НЕ по отдельности.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
27.08.2014, 00:01
Цитата Сообщение от Gygocopter Посмотреть сообщение
Почему не работает cin.get(), cin,getline()?
Потому что они закомментированы.
Цитата Сообщение от Gygocopter Посмотреть сообщение
И два слова в один массив title[LEN], через пробел, НЕ по отдельности.
И как второй вызов get/getline должен узнать, что он должен псиать второе слово не в title, а дописывать его туда? Догадаться?
0
10 / 10 / 8
Регистрация: 05.02.2014
Сообщений: 124
27.08.2014, 00:09  [ТС]
Vourhey, специально закомментировал. cin>>title позволяет ввести одно слово.
cin.get() и cin.getline(), насколько я знаю, позволяют вводить вместе с пробелами до символа '\n'(если 3 параметр пуст). Мне и нужно ввести через cin.get() ИЛИ через cin.getline() в массив title, например, "Вася Пупкин", но почему-то не работают. Ошибки указаны в 1 посте.
Вы, наверное, не так всё поняли.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
27.08.2014, 00:31
Вопрос - с латинскими символами работает? Потому что cin.getline(title, LEN); должен отрабатывать нормально.
Цитата Сообщение от Gygocopter Посмотреть сообщение
OemToCharA((LPCSTR)title, (LPSTR)title);
Не должно быть, но все-таки ради эксперимента попробуй использовать при вводе вместо title временный массив, а title тут в качестве destination.

Добавлено через 2 минуты
Это, блин, с дебагером все проверяется на раз-два. Возьми дебагер, да проверь, что у тебя попадает в title и что там после eom-бла-бла-бла. Для кого, блин, дебаггер придумали люди, не понятно...
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
27.08.2014, 09:16
Не мучайся, используй для хранения строк std::string и читай их так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <limits>
 
int main()
{
    std::cout << "Enter your text: ";
    std::string text;
    getline (std::cin, text);
    std::cout << std::endl << text << std::endl;
 
    return 0;
}
1
10 / 10 / 8
Регистрация: 05.02.2014
Сообщений: 124
27.08.2014, 19:50  [ТС]
Всем спасибо, разобрался!)
Проблема из-за '\n', который остается в потоке при вводе через cin.get() и cin>>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2014, 19:50
Помогаю со студенческими работами здесь

Объясните работу методов cin.getline и cin.ignore
Фрагмент программы ниже. Что делают cin.getline и cin.ignore (12-13 строки) void WorkWithBooks(int Books) { if (Books &gt; 0) ...

Отличие функции cin.get и cin.getline
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...

cin.getline и cin.ignore
Есть кусок кода в котором не могу разобраться. Если cin.ignore() есть, то теряется первый вводимый символ начиная со второго входа в for....

Cin вместо cin.getline
#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;fstream&gt; using namespace std; int get_int(int default_value); char name; ...

getline(cin, str) и cin>>
Добрый день. Есть код: ... string str; int N; cin&gt;&gt; N; getline(cin, str); cout&lt;&lt;str&lt;&lt;endl; //Выводит: &lt;пустота&gt; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru