Не работает cin.getline
Не работает cin.getline(name2, 3). Компилятор его тупо пропускает.
Добавлено через 4 минуты
первый cin.getline(name,3); работает нормально
Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
cin.getline как работает?
Здравствуйте, в моей программе я столкнулся с некоторой проблемой. В переменную place я хочу.
Не работает cin.getline(buf, 20);
Товарищи подскажите почему не работает cin.getline(buf, 20);? Проблема в том что я хочу ограничить.
Не работает. cin.getline(string,200);
Я создаю проект. Все работает кроме одного cin.getline(string,200), почему? Когда запускаю этот.
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
Сообщение было отмечено FGlomgold как решение
Решение
Сообщение от FGlomgold
Компилятор его тупо пропускает.
Нет. Просто после первого getline в буфере ввода остаётся символ конца строки, поэтому второй сразу завершается.
Попробуйте, например, ввести сразу 6 символов — и Вы увидете, что оба оператора отработали.
Не работает getline в case
Здраствуйте, у меня проблема с оператором getline в case — он попросту пропускается когда надо вводить текст . уже второй день над етим бьюсь и ничего сделать немогу .
switch(opt) <
case 1:
<
std::string text;
std::getline(std::cin, text);
for(int i = 0; (unsigned int)i < text.size(); i++) <
if((char)text != ‘ ‘) <
std::cout > else <
std::cout >
>
std::cout >
break;
case 2:
<
std::ifstream inputfile;
inputfile.open(«forencode.txt»);
if(inputfile.is_open()) <
std::string text;
std::getline(inputfile, text);
inputfile.close();
std::ofstream outputfile;
outputfile.open(«encoded.txt»);
if(outputfile.is_open()) <
for(unsigned long int i = 0; (unsigned int)i < text.size(); i++) <
outputfile >
outputfile.close();
> else <
exit(EXIT_FAILURE);
>
> else <
exit(EXIT_FAILURE);
>
>
break;
default:
<
std::cout exit(EXIT_FAILURE);
>
>
Может вы подскажите с чем проблема?
Не работает getline
тобы исправить ошибку, вам нужно заменить строку while (cin.getline(f, str)) на while (getline(f, str)). Кроме того, вы можете добавить проверку на конец файла, чтобы выйти из цикла, когда все строки были прочитаны:
if ( f.is _open()) <
while (getline(f, str)) <
for (size_t i = 2; i < str.length(); i += 3) <
wcout >
>
f.close();
> else <
wcout >
иван савинУченик (18) 8 месяцев назад
идентификатор getline не найден
У меня работает такой код:
#include
#include
#include
using namespace std;
int main() <
setlocale(LC_ALL, «rus»);
wifstream f(«text.txt»);
wstring str;
f.imbue(locale(«»));
if ( f.is_open()) <
while (getline(f, str)) <
for (size_t i = 2; i < str.length(); i += 3) <
wcout >
wcout >
f.close();
>
else <
wcout >
return 0;
>
Только происходит транслитерация:
l
b
yo
o
a
Vo pole beryoza stoyala.
p
a
a
a
o
—
u
l
Vy`pila shampaskoe — upala.
Вот текст в файле:
Во поле берёза стояла.
Выпила шампаское -- упала.
Почему после использования cin функции cin.get() и cin.getline() не работают, а последующие вызовы cin срабатывают?
Насколько я знаю cin оставляет символ ‘\n’ в потоке из-за чего последующие вызовы cin.get() и cin.getline() не будут срабатывать, поскольку они будут натыкаться на символ перевода строки и завершать свою работу. Для того, чтобы функции cin.get() и cin.getline() успешно работали после cin >> нужно «выбросить» ‘\n’ из потока при помощи cin.get() или cin.ignore(numeric_limits
Вопрос: почему cin будет работать и без «очищения» потока от символа ‘\n’?
Т.е. я имею в виду, что этот код будет работать без cin.get() или cin.ignore():
char str1[80], str2[80]; cin >> str1; cin >> str2;
А этот нет:
char str1[80], str2[80]; cin >> str1; cin.getline(str2, 80);