Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Как ввести данные при помощи оператора
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Xenon Xenon вне форума
Member
 
Сообщений: 58
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию Как ввести данные при помощи оператора - 12.06.2006, 20:04

Пользователю предлается ввести данные, в связи с вызовом оператора cin. Как по дефолту вставить какой-то текст в поток ?
То есть, прога, типа:
Код:
cout << "Enter day: ";
cin >> day;
На экране будет:
Код:
Enter day:Monday
Здесь пользователь ничего пока не вводил. Если его устраивает Monday, то он просто жмет ENTER, если же не устраивает, то он стирает это и вводит что-то свое. То есть, эдакое значение по умолчанию.
Может для этого существует какой-либо флаг cin?
Ответить с цитированием
  (#2 (permalink)) Старый
Rockie Rockie вне форума
Member
 
Сообщений: 126
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2005
По умолчанию Re: как организовать такую штуку с вводом - 12.06.2006, 21:09

Цитата:
Originally posted by Xenon
[b]Если его устраивает Monday, то он просто жмет ENTER, если же не устраивает, то он стирает это и вводит что-то свое. То есть, эдакое значение по умолчанию.
Может для этого существует какой-либо флаг cin?
скорее всего есть... операторы добавления в поток.. но imho морока с этим - абсолютно неблагодарное занятие. если потоки так устроили, то есть чтение до символа разделителя (пробела), то так оно и азм есмь. imho ваша проблема не в отсутствии флага cin, а в неудачном проектировании программы. продумайте ввод по - другому, в конце концов откажитесь от потоков, или введите лишний запрос "Надо менять Monday или нет?"
Ответить с цитированием
  (#3 (permalink)) Старый
Xenon Xenon вне форума
Member
 
Сообщений: 58
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 12.06.2006, 23:25

Ну или тогда, сделать, аля
Press enter if you don`t want to change this field
Enter day (Monday):
Но тогда нужно ввести лишнюю переменную, добавить if. Растраты
Ответить с цитированием
  (#4 (permalink)) Старый
Rockie Rockie вне форума
Member
 
Сообщений: 126
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2005
По умолчанию 13.06.2006, 00:10

Цитата:
Originally posted by Xenon
[b]Ну или тогда, сделать, аля
Press enter if you don`t want to change this field
Enter day (Monday):
Но тогда нужно ввести лишнюю переменную, добавить if. Растраты
да уж растраты жуткие =)
Ответить с цитированием
  (#5 (permalink)) Старый
Xenon Xenon вне форума
Member
 
Сообщений: 58
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 13.06.2006, 01:06

Rockie Просто таких полей у меня будет штук 7-8 и если для каждой переменную создавать и if ... Не то, что печатать много, а как-то глупо выглядит ... Что, метод что ли отдельный у класса сделать ... вот я и и теряюсь
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 13.06.2006, 03:38

Доброе время суток!
Если я правильно понял, то нужно чето вроде этого?
Код:
#include <iostream>
#include <conio>
using namespace std;

int main()
{
        string day = "Monday";
        string copy = "";
        bool exit = false;
        do
        {
                clrscr();
                cout << "Enter day: " << day;
                switch(getch())
                {
                        case    13      :       exit = true;
                                                break;
                        case    8       :       day.pop_back();
                                                break;
                        default         :       cin >> copy;
                                                day += copy;
                                                exit = true;
                                                break;
                }
        }while(!exit);
        cout << "n" << day;
        getch();
        return 0;
}
Ответить с цитированием
  (#7 (permalink)) Старый
wils0n wils0n вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.11.2005
По умолчанию 13.06.2006, 10:11

а в g++ есть <conio> ? Я чё-то у себя не обнаружил.
Ответить с цитированием
  (#8 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 13.06.2006, 10:25

<cstdio> есть ?
Ответить с цитированием
  (#9 (permalink)) Старый
wils0n wils0n вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.11.2005
По умолчанию 13.06.2006, 10:48

Цитата:
Originally posted by sq-Weezee
[b]<cstdio> есть ?
такой зверь есть. только компилятор ругается. Говорит, что нет функций clrscr() и getch().
Ответить с цитированием
  (#10 (permalink)) Старый
Rockie Rockie вне форума
Member
 
Сообщений: 126
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2005
По умолчанию 13.06.2006, 13:31

Цитата:
Originally posted by wils0n
[b]Говорит, что нет функций clrscr() и getch().
getch() можно попробовать на _getch() заменить, а clrscr() просто экран очищает (много раз 'n' печатает)
Ответить с цитированием
  (#11 (permalink)) Старый
wils0n wils0n вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.11.2005
По умолчанию 13.06.2006, 14:10

Цитата:
Originally posted by Rockie
[b]а clrscr() просто экран очищает (много раз 'n' печатает)
тогда программа, написанная выше, будет ужасно работать.
лучше уж тогда ncurses прикрутить. А ещё лучше, не заниматься такой фигнёй, а чё-нить попроще придумать.
Ответить с цитированием
  (#12 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 13.06.2006, 17:44

сори, чем богаты, тем и рады
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Xenon Xenon вне форума
Member
 
Сообщений: 58
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 17.06.2006, 15:27

Ну clrscr() понятно, его я заменил на system ("cls").
Но компилятор начал жаловаться, что нечем обрабатывать ему операцию << для string. Подключил файл "string", эта ошибка исправилась, но он стал жаловаться, что pop_back нету Есть только push_back
Ответить с цитированием
  (#14 (permalink)) Старый
wils0n wils0n вне форума
Member
 
Сообщений: 186
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.11.2005
По умолчанию 17.06.2006, 16:04

Цитата:
Originally posted by Xenon
[b]но он стал жаловаться, что pop_back нету Есть только push_back
Правильно жалуется. pop_back() действительно нет. Зато есть кучу других вещей, например:
1. length() и оператор []
2. reverse_iteator и rbegin()
3. erase() и resize()
в зависимости от потребностей
Ответить с цитированием
  (#15 (permalink)) Старый
Xenon Xenon вне форума
Member
 
Сообщений: 58
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 17.06.2006, 16:56

Просто я тогда неочень понимаю, что имел ввиду sq-Weezee
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо получать данные при помощи DDE Max.Z C++ Builder 1 22.05.2011 20:45
использование оператора case 555ALEXANDR555 Pascal 0 10.01.2011 17:27
Данные из Access отправить в Excel при помощи VBA anutik2105 Visual Basic 0 15.09.2010 16:03
Как определить оператора berlios Windows CE 0 11.03.2010 19:47
Ошибка при перегрузке оператора присваивания bubububu Вопросы начинающих программистов 3 28.09.2007 17:43
Язык без оператора сравнения Among Алгоритмы 45 14.11.2006 09:17
Надо ввести данные и по ним построить графики данные вводятся в TValueListEditor preya C++ Builder 10 19.09.2006 02:10
Ошибки С++ код для оператора try catch Cris C++ Builder 1 24.03.2006 03:32
Касательно оператора GET PowerCat Visual Basic 1 14.03.2006 11:03
Перегрузка многоразмерного оператора Anonymous С/С++ 1 29.08.2003 14:42
При помощи каких функций и компонентов можно считывать и передавать данные в COM-порт Anonymous C++ Builder 7 07.02.2003 11:23
Как прочитать данные из MS SQL при помощи Perl Anonymous Perl 1 23.08.2002 14:31



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов