Другие языки программирования и технологии

c++ system("pause") и sin.get() выполняют одну и ту же функцию?

1) system("pause") и sin.get() выполняют одну и ту же функцию?
2) cin.ignore()- в одниъ прогах пишут, в других нет.... когда ее надо писать то?
кто нибудь знает?
Чуть-чуть просветляемся.
C++ в целом состоит из кучи прямо реализованных концепций с кривыми склейками между ними. Видимо, ты как раз наткнулся на такие склейки. Альтернативой было бы отсутствие склеек, но кривая реализация, как в большинстве других языков. Собственно, поэтому C++ и не рекомендуют как первый ЯП - надо учиться не только программировать, но и кучу разных концепций, которые другие языки маскируют за счет эффективности.
system("pause") обычно добавляют в конце программы, чтобы окно консоли не закрывалось и можно было прочитать результат. Это склейка между консолью и оконным интерфейсом; более цивилизованные IDE обычно предлагают свою обертку для консольных программ, автоматически выставляющую паузу. cin.get() может выполнять ту же функцию - ввод из консоли для того, чтобы удержать программу от закрытия.
Что касается cin.ignore(), то, видимо, ты смешиваешь несколько концепций ввода, скажем, оператор >> и scanf.
Главное: есть консоль. Консоль поддерживает ровно две операции: ввод (с клавиатуры, телетайпа, по сети, из файла - не имеет значения, в этом суть консоли) и вывод (на экран, на принтер, в сеть, в файл...) Пауза - это не операция консоли, это что-то для конкретной реализации (ну вот как в файл паузу вписать?), поэтому начинаются головные боли и путаницы. Прямой способ здесь - взять отдельную (нестандартную) библиотеку для работы с консолью компьютера, скажем, ncurses или (для windows - windows.h; но это означает учить дополнительные концепции, и все предпочитают выкручиваться.
C++ реализует несколько способов ввода из консоли - например, istream::operator>> и scanf (и еще несколько). Эти способы друг друга дублируют, но по-разному, и надо быть аккуратным, чтобы не обвалить программу из-за того, что один метод ожидал, что буфер ввода будет очищен предыдущей операцией, а предыдущий оставил в нем символы, думая, что следующий сам разберется, что к чему. Лучше использовать только один способ.
system("pause") вызывает внешнюю команду pause
сin.get() читает из потока один символ
Сергей Купцов
Сергей Купцов
75 058
Самый адекватный ответ из всех - первый...
Тока если что, функция system(); передаёт строку в консоль и всё.
Ты можешь тупо pause написать в консоли.... Вместо паузы можно любые команды писать консольные...
Dovlet Charyiv
Dovlet Charyiv
15 046
1) нет. первое не будет работать скажем на линуксе. а cin.get() это стандарт

2) я cin.sync(); пишу перед cin.get()
а то бывает не срабатывает после того как что-то вводили
но от чего зависит не знаю. погугли
Darius Navickas
Darius Navickas
170
Сергей Купцов если на int a;cin>>a; подать в консоли строку 100.3, то переменная a примет значение 100, а в потоке останется ".3" - первый cin.get() вернет '.', и не встанет на паузу