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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 18:51   #1
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию Ввод и обработка строго одного символа

Случай классический:

Код:
#include <iostream>

using namespace std;

int main(){

    for(;;){
         wchar_t wch;
    
         wcin.get(wch);
         switch(wch){
         //...
         }
         wcin.ignore();
    }
return 0;
}
Если ввести в wch несколько символов, то switch прогонит её лишнее количество раз.
Не могу разобраться, какие аргументы нужно передать wcin.ignore, чтобы она отбрасывала все символы, кроме первого? У меня либо глюки, либо ошибки при компиляции.
Кипящий чайник вне форума
Старый 02.12.2010, 19:14   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

А что вам мешает ввести несколько символов, а обработать только один?
Код:
wchar_t str[100];
wcin.get(str);
switch(wcin[0])
{
//...
}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума
Старый 02.12.2010, 20:41   #3
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Цитата:
Не могу разобраться, какие аргументы нужно передать wcin.ignore, чтобы она отбрасывала все символы, кроме первого?
Никакие. Зачем вообще использовать ignore? Как я понял тебе нужно обработать строку посимвольно. Кстати, телепаты в отпуске. Если я правильно понял что тебе нужно то вот:
PHP код:
#include <iostream>

using namespace std;

int main(int argcchar **argv)
{
    
wchar_t ch;

    while (!(
wcin.eof()))
    {
        
wcin.get(ch);

        switch(
ch)
        {
            
//обрабатываем ввод
        
}
    }
    return 
0;

Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)

Последний раз редактировалось Ru_DoLF; 02.12.2010 в 20:42. Причина: P.S. Тут только подсветка php и html? Или это просто я не нашел?
Ru_DoLF вне форума
Старый 02.12.2010, 20:46   #4
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию

Ru_DoLF Мне не нужны телепаты. Мне нужно, чтобы обрабатывался только ОДИН символ, именно первый, даже если юзверь введёт несколько.
В моём алгоритме всё работает прекрасно, если вводишь один символ. Но если вводишь не букву, а уже слово, то начинаются глюки. Я же хочу так: сколько бы символов юзер не ввёл, всё равно обрабатываться будет только первый, и цикл при этом не будет прогоняться лишнее количество раз.

Гром Я думал об этом. Но, может быть, есть более изящный способ? И ещё, с небольшими поправками это работает (я считываю в массив при помощи wcin.getline(wch, 100)), но тогда требуется два раза жать на Enter, чтобы программа продолжила выполняться. Либо же, если оставить твой способ через wcin.get() - это не даёт положительных результатов. Там, правда, приходится писать wcin.get(str[0]).

Последний раз редактировалось Кипящий чайник; 02.12.2010 в 21:14.
Кипящий чайник вне форума
Старый 02.12.2010, 20:52   #5
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Цитата:
Мне не нужны телепаты
Я на себя намекал на тех кто будет отвечать в теме.

Код:
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
	wchar_t ch;
	wcin.get(ch);

	switch(ch)
	{
		//обрабатываем ввод
	}

	return 0;
}
Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)
Ru_DoLF вне форума
Старый 02.12.2010, 21:03   #6
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию

Нет, убирание wcin.ignore ничего не меняет.
Кипящий чайник вне форума
Старый 02.12.2010, 21:05   #7
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Кипящий чайник, еще раз сравни мой и свой код. Дело не только в том что у меня нету ignore().
Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)
Ru_DoLF вне форума
Старый 02.12.2010, 21:35   #8
Кипящий чайник
Форумчанин
 
Регистрация: 17.12.2009
Сообщений: 101
По умолчанию

Ты добавил аргументы в main(), но это ничего не меняет. Уже пробовал.
Кипящий чайник вне форума
Старый 02.12.2010, 21:36   #9
Ru_DoLF
Ubuntu 10.04
Пользователь
 
Аватар для Ru_DoLF
 
Регистрация: 15.07.2010
Сообщений: 51
По умолчанию

Цитата:
Ты добавил аргументы в main(), но это ничего не меняет. Уже пробовал.
Снова мимо!
Язык образует среду мышления и формирует представление о том, о чем мы думаем (Б. Л. Уорф)
Ru_DoLF вне форума
Старый 02.12.2010, 21:41   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

(Читерский бот влезает в викторину) шепотом в том коде цикла нет!... Чшшш!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод символа без эха Ратмир Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.11.2010 20:25
Обработка события выгрузки экземпляра (одного из нескольких) COM-сервера в приложении edwardvk Общие вопросы Delphi 0 03.10.2010 17:07
Как запретить ввод второго символа "-" в StringGrid ? Ветас Помощь студентам 2 11.11.2009 22:17
Ввод и обработка греческих символов? PONKA Общие вопросы Delphi 1 21.04.2008 21:36
предложения, все слова в которых образованны повторением одного символа, и сформировать из них массив kluwa Общие вопросы C/C++ 4 08.12.2007 15:17