2013-07-26 3 views
0

Есть ли способ, которым я могу позволить пользователю нажимать только клавишу Enter без ввода каких-либо данных и продолжить работу с программой в std::cin? Благодаря!Позвольте пользователю пропустить ввод ввода и просто нажать клавишу Enter

_tprintf(_T("\nENTER CHOICE: ")); 
cin>>ch; 
cin.ignore(); 

При запуске программы с этим сегментом кода, скорее всего, когда я действительно не хочу, чтобы ввести что-нибудь на этом поле вообще, когда я нажимаю клавишу курсора будет производить только новые строки ввода.

+0

@AlexandruBarbarosie Нестандартный. – Rapptz

+0

'std :: cin.get()' – 0x499602D2

+0

Отправьте пример программы, чтобы я мог понять более четко. – 0x499602D2

ответ

0

Если я правильно понял ваш вопрос, вы можете просто проверить, равен ли вход ""; если это не так, не выполняйте запрошенное действие.

EDIT: О, теперь, когда вы редактировали свой вопрос, я понял, чего вы хотите. Просто используйте cin.ignore();. Вам не нужно cin >> ничего до этого.

1

если вы «читаете» std::noskipws, тогда чтение перестанет пропускать пробелы. Это означает, что когда вы читаете один символ, вы можете читать пробелы и символы новой строки и т. Д.

#include <iostream> 
#include <iomanip> 

int main() { 
    std::cin >> std::noskipws; //here's the magic 
    char input; 
    while(std::cin >> input) { 
     std::cout << ">" << input << '\n'; 
    } 
} 

при запуске с входом:

a 

b 

c 

производит:

>a 
> 

> 

>b 
> 

> 

>c 

Таким образом, мы можем видеть, что он прочитал в письме a, затем клавишу ввода после перехода на новую строку, а затем пустую строку, затем письмо b и т. д.

Если вы хотите использовать r, чтобы нажать клавишу ввода после ввода номера, вам придется обработать это в своем коде.

Если пользователь просто введя одну «вещь» в каждой строке, есть на самом деле простой способ:

#include <iostream> 

int main() { 
    std::string line; 
    while(std::getline(std::cin, line)) { 
     std::cout << line << '\n'; 
    } 
} 

Это будет считывать символы из ввода до конца строки, что позволяет читать строки с пробелами или линиями, в которых ничего нет. Будьте предупреждены, что после использования std::cin >> он обычно оставляет ключ новой строки на входе, поэтому, если вы делаете std::getline сразу после того, как он вернет пустую строку. Чтобы этого избежать, вы можете использовать std::cin.ignore(1, '\n'), чтобы он игнорировал новую строку, прежде чем пытаться использовать std::getline.

0

Нет, вы не можете использовать cin для этого.

При нажатии ENTER клавиши, когда программа ожидает ввод, cin будет полностью игнорировать символ новой строки (так же, как он игнорирует пробельные из-за skipws), хранить символ новой строки во входном потоке и держать просить вход. Если он не получает действительный ввод для соответствующего типа или не встречает EOF, он будет продолжать запрашивать ввод.

Используйте вместо этого функцию getline.

#include <string> 
... 
cout << "Enter Something\n"; 
string a; 
getline(cin, a); 
Смежные вопросы