Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 13:58   #1
Arantir#
Пользователь
 
Регистрация: 24.08.2012
Сообщений: 28
Вопрос string, cin.getline() не понимаю...

Неполная часть программы:

PHP код:
struct file
{
    
string adress;
};

void add(file **tempfile **last)
{
        
cout << "Adress:";
    
getline(cin,(*temp)->adress);
    
cout << "--------------\n";

В переменную adress автоматически вводится "--------------", то есть в консоль выводится: Adress: -------------- и начинается выполнение следующих операндов.
Собственно нужно чтобы в переменную типа string вводилась строка с пробелами, ну а после выводилась(в др. ф.).
Переменная именно с типом string.
Arantir# вне форума Ответить с цитированием
Старый 30.11.2012, 15:59   #2
Александр Павлович
Пользователь
 
Аватар для Александр Павлович
 
Регистрация: 25.11.2012
Сообщений: 13
По умолчанию сначала примите ввод в char[], потом копируйте char[] в string

Цитата:
Сообщение от Arantir# Посмотреть сообщение
Переменная именно с типом string.
Насколько я помню аргументом getline д.б. char[].
Поэтому сначала примите ввод в char[], потом копируйте char[] в string.
С глубоким уважением,
Александр
Александр Павлович вне форума Ответить с цитированием
Старый 30.11.2012, 16:23   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Arantir# Посмотреть сообщение
В переменную adress автоматически вводится "--------------"
Это как так? Вывод на ввод сам по себе никак не может попасть.
Цитата:
Сообщение от Arantir# Посмотреть сообщение
то есть в консоль выводится: Adress: -------------- и начинается выполнение следующих операндов.
Там какого-нибудь перевода строки не осталось в потоке после предыдущих операций чтения?
Цитата:
Сообщение от Александр Павлович Посмотреть сообщение
Насколько я помню аргументом getline д.б. char[].
Поэтому сначала примите ввод в char[], потом копируйте char[] в string.
Не, это istream::getline. Тут всё хорошо.
Somebody вне форума Ответить с цитированием
Старый 30.11.2012, 16:28   #4
Arantir#
Пользователь
 
Регистрация: 24.08.2012
Сообщений: 28
По умолчанию

Собственно вот программа http://programmersforum.ru/showthread.php?t=219721, но там ввод до пробела...
Arantir# вне форума Ответить с цитированием
Старый 01.12.2012, 16:01   #5
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Там какого-нибудь перевода строки не осталось в потоке после предыдущих операций чтения?
Вот именно оно и есть в этой программе. После чтения числа перевод строки остаётся. Используй istream::ignore.
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cin.getline и gets() iceman2112 Общие вопросы C/C++ 3 14.11.2012 14:33
cin.getline Intess Общие вопросы C/C++ 1 20.03.2012 15:22
C++, ввод списка средствами cin.getline Chugun Помощь студентам 0 07.03.2012 16:04
C++ cin.getline. Исправьте ошибку Jane-sad Помощь студентам 0 18.02.2011 15:46
Проблема с функцией cin.getline. Подскажите советом. (*_*) Общие вопросы C/C++ 3 04.03.2009 22:43