Для ввода строк с пробелами в символьный массив мы должны воспользоваться либо методом get(), либо методом getlineO (см. п. п. 27.1.6.3 в [1]).
Метод get () позволяет ввести в символьный массив из п элементов не более п - 1 символов, следит за символом завершения ввода и проставляет после введенных символов нулевой байт. Метод перегружен и имеет несколько прототипов:
int_type get('); istream& get(char& Ch);
istream& get(char *str, streamsize count);
istream& get(char *str, streamsize count, char delim);
Первые два вида метода get(), как мы уже знаем, применяются для ввода символов. Последние два — для ввода строк. Для ввода строки с пробелами в массив s нам достаточно написать в программе вызов:
cin.get(s, 50);
Завершается ввод, как всегда, нажатием клавиши Enter, после чего во входной поток попадает символ ' \п', а в массив символов на последнее место записывается нулевой байт. Чтобы можно было корректно продолжить ввод (следующей строки), символ '\п' надо удалить из входного потока. Это делается методом ignoreO (см. п. п. 27.1.6.3 в [1]), который извлекает символы из потока, ничего не занося в переменные. Таким образом, ввод одной строки в массив s выполняется так:
cin.get(s,50); cin.IgnoreO ;
Символ ' \n' является символом завершения ввода строки по умолчанию, однако мы можем задать любой символ завершения, например точку (' . '):
cin.get(s,50,'.'); cin.ignoreO;
Сделали сайт и вам нужны посетители? http://webmaster.md/publish.php?id=7.
Правда, для окончания ввода все равно придется нажать клавишу Enter. Метод ignoreO на самом деле имеет два параметра:
• количество удаляемых из потока символов (по умолчанию — 1);
• символ-ограничитель, который тоже удаляется из потока (значение по умолчанию — конец файла); |