Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Searge
0 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 1
1

Не работает cin.getline при считывании строки большей буфера

21.09.2014, 03:30. Просмотров 667. Ответов 1
Метки нет (Все метки)

Доброго всем времени суток! Проблема состоит в том, что если ввести 4 и более символов cin.getline(boofer, 3); перестаёт работать. Как я понимаю, getline должен считать в boofer 3-1 символа. Подскажите, пожалуйста, в чём может быть ошибка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
 
using namespace std;
 
int main()
{
    system("chcp 1251");
    system("cls");
 
    char boofer[4];
    for(;;)
    {
    cout << "\n\tВведите значение: ";
    cin.getline(boofer, 3);
    if (boofer[0]!='0'&&boofer[0]!='1') cout << "\tОшибка ввода! Повторите ввод: ";
    cout << "\n\tв строке символов: " << strlen(boofer) << "\n"  << "\tсодержимое буфера: " << boofer << "\n\n";
    }
 
    return 0 ;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2014, 03:30
Ответы с готовыми решениями:

Cin.getline() не работает при динамическом выделении памяти
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все...

При множественном наследовании не работает getline(std::cin, ?)
Изучаю множественное наследование, так вот, нужно ввести два слова, но программа просто пропускает ...

Не работает ни cin.Get(), ни cin.Getline()
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; #include...

Не работает cin.getline
#include &lt;iostream&gt; int main() { using namespace std; char name,name2;...

1
alsav22
5465 / 4860 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2014, 06:11 2
Цитата Сообщение от Searge Посмотреть сообщение
Подскажите, пожалуйста, в чём может быть ошибка.
О какой ошибке вопрос? Зачем, в параметрах getline(), уменьшаете размер буфера?
Так нужно:
C++
1
cin.getline(boofer, 4);
Вводить не больше 3-х, если будет введено три, то в 4-й элемент буфера (по индексу 3) getline() поместит '\0'. Если будет введено больше трёх символов, то getline() поместит в буфер три символа, в конец поместит '\0', установит флаг ошибки (failbit), поток станет нерабочим, не введённое останется в очереди ввода.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2014, 06:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не работает cin.getline(buf, 20);
Товарищи подскажите почему не работает cin.getline(buf, 20);? Проблема в том что я хочу ограничить...

Не работает. cin.getline(string,200);
Я создаю проект. Все работает кроме одного cin.getline(string,200), почему? Когда запускаю этот...

cin.getline работает через раз
вот этот код работает прекрасно #include &lt;iostream&gt; using namespace std; void Open_Directory()...

C++ проблема с вводом, getline(cin, *p) не работает
В общем есть вот такой вот код, я хочу, что бы ввод названия компании шел после ввода диаметра, но...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.