2014-02-08 3 views
0

Хорошо, быстрый вопрос.как захватить первый небелый символ в цине

В C++ я хочу игнорировать пробелы, поэтому я знаю, что мне нужно использовать cin и, возможно, не cin.get , потому что «пробел» - это символ.

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

Так что я предполагаю, что должен использовать cin.ignore(), но я также понял, что не могу просто добавьте аргумент из 1000, потому что тогда пользователь должен ввести 1000 символов (по крайней мере, когда я тестировал). Итак, как мне получить только первый символ без пробелов?

ответ

2

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

char firstChar = (is >> std::ws).get(); 

Для очистки остальной части входного потока , вы можете ignore() все остальные символы до следующей строки, что-то вроде:

is.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
0

operator<<, как Formatted Input Function, будет отбрасывать ведущие пробельные символы, так что вы можете сделать это:

char c; 
cin >> c; 

Избавление от остальных может быть сделано с std::istream::ignore:

// Ignore everything or up to the first new line character, 
// whichever comes first 
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
Смежные вопросы