Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Bronny
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 18
#1

Убрать переход на новую строку после "cin" - C++

13.12.2012, 01:16. Просмотров 3529. Ответов 27
Метки нет (Все метки)

Хотелось бы убрать переход на новую строку после "cin".
когда использую cin>>n;
после ввода, в консоли автоматически идет переход на новую строку. Возможно ли как то убрать его операциями из стандартной библиотеки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 01:16     Убрать переход на новую строку после "cin"
Посмотрите здесь:
C++ Переход на новую строку после пробела
Переход на новую строку после 10 чисел C++
Переход на новую строку после N символов C++
C++ "cin","cout" на "printf","scanf"
C++ Дана строка слов, разделенных пробелами. Сформируйте новую строку, вставив перед каждым вхождением слова "and" запятую
На C++ в строке после символа - "+" поставить символ "*" и посчитать сколько "+" C++
cin без перехода на новую строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7171 / 4337 / 633
Регистрация: 29.11.2010
Сообщений: 11,784
15.12.2012, 16:00     Убрать переход на новую строку после "cin" #16
Цитата Сообщение от Bronny Посмотреть сообщение
на линуксе можно пробелом делать ввод.
мне надо именно под Win32 console aplication
На Windows тоже. Другое дело, что для подтверждения ввода нужно Enter нажать, который пошлет '\n' в поток, что переведет каретку на новую строку. Смотрите в сторону conio.h, там должно быть что-то нужное для вас.
Bronny
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 18
15.12.2012, 16:02  [ТС]     Убрать переход на новую строку после "cin" #17
Цитата Сообщение от MrGluck Посмотреть сообщение
На Windows тоже. Другое дело, что для подтверждения ввода нужно Enter нажать, который пошлет '\n' в поток, что переведет каретку на новую строку. Смотрите в сторону conio.h, там должно быть что-то нужное для вас.
это и ищу=(
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.12.2012, 16:07     Убрать переход на новую строку после "cin" #18
Bronny, вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <Windows.h>
 
void GoToXY (COORD);
 
int main()
{
    std::cout << "ABC = ";
    _CONSOLE_SCREEN_BUFFER_INFO Info;
 
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),  // handle to screen buffer
                                &Info  // screen buffer information
                            );
    int a;
    std::cin >> a;
 
    Info.dwCursorPosition.X = 0;
    GoToXY(Info.dwCursorPosition);
 
    std::cout << "ABC = " << a << " SM" << std::endl;
    
    std::system("pause");
}
 
void GoToXY (COORD coord)
{
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
Добавлено через 53 секунды
Конечно неплохо было бы проверить возвращаемое значение, но думаю Вы сами справитесь.
kit0072
6 / 6 / 2
Регистрация: 14.10.2012
Сообщений: 13
15.12.2012, 16:07     Убрать переход на новую строку после "cin" #19
а ели вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include<conio.h>
 
int main()
{
    setlocale(LC_ALL, "");
    int a;
    std::cout<<"Введите размер отрезка: ";
    std::cin >> a;
    std::cout<<"Отрезок равен : " << a << " см";
    _getch;
    
}
MrGluck
Модератор
Эксперт CЭксперт С++
7171 / 4337 / 633
Регистрация: 29.11.2010
Сообщений: 11,784
15.12.2012, 16:14     Убрать переход на новую строку после "cin" #20
go, все проще)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <clocale>
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL, "");
    char a;
    std::cout << "Отрезок равен : ";
    a = getche();
    std::cout << " см\n";
    //std::cout << a;
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.12.2012, 16:22     Убрать переход на новую строку после "cin" #21
Цитата Сообщение от MrGluck Посмотреть сообщение
go, все проще)
Фиговый вариант. Во-первых это не совместимо(отличие от getch(), что с эхом, но также опасно), во-вторых не подходит ТСу в следствии того, что считывает один символ. Т. е. Получим однозначное число, точнее цифру, а у вас вообще только ASCII код ее.
Цитата Сообщение от MrGluck Посмотреть сообщение
char a;
Цитата Сообщение от MrGluck Посмотреть сообщение
a = getche();
int a; Посмотрите прототип функции. Не забываем об отрицательных значениях.
Bronny
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 18
15.12.2012, 16:30  [ТС]     Убрать переход на новую строку после "cin" #22
Цитата Сообщение от go Посмотреть сообщение
Фиговый вариант. Во-первых это не совместимо(отличие от getch(), что с эхом, но также опасно), во-вторых не подходит ТСу в следствии того, что считывает один символ. Т. е. Получим однозначное число, точнее цифру, а у вас вообще только ASCII код ее.



int a; Посмотрите прототип функции. Не забываем об отрицательных значениях.
да. Хотелось бы без использования char.
MrGluck
Модератор
Эксперт CЭксперт С++
7171 / 4337 / 633
Регистрация: 29.11.2010
Сообщений: 11,784
15.12.2012, 16:40     Убрать переход на новую строку после "cin" #23
go, да, вариант с getche() не проходит при числах (не цифрах), ну а если поставить ANSI драйвер? На Linux он по-умолчанию используется, на Windows должен от DOS наследоваться, просто надо при загрузке включить, так что можно сказать кроссплатформенный вариант. Хоть ваш для Windows все же лучше подходит (легче реализовать).
http://ru.wikipedia.org/wiki/ANSI.SYS
Bronny
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 18
15.12.2012, 16:59  [ТС]     Убрать переход на новую строку после "cin" #24
Цитата Сообщение от kit0072 Посмотреть сообщение
а ели вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include<conio.h>
 
int main()
{
    setlocale(LC_ALL, "");
    int a;
    std::cout<<"Введите размер отрезка: ";
    std::cin >> a;
    std::cout<<"Отрезок равен : " << a << " см";
    _getch;
    
}
что делает _getch; ?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.12.2012, 17:07     Убрать переход на новую строку после "cin" #25
Цитата Сообщение от Bronny Посмотреть сообщение
что делает _getch; ?
Ничем не отличается от getch(). Просто названа в соответствии со стандартом.
MrGluck
Модератор
Эксперт CЭксперт С++
7171 / 4337 / 633
Регистрация: 29.11.2010
Сообщений: 11,784
15.12.2012, 17:11     Убрать переход на новую строку после "cin" #26
Bronny, по соглашению стандарта ANSI для разработчиков, функции, не входящих в стандарт, следует писать с _ . Это своего рода сигнал.
DDyst
5 / 5 / 1
Регистрация: 16.07.2016
Сообщений: 29
26.07.2016, 22:41     Убрать переход на новую строку после "cin" #27
Пардон за некропост, решил не засорять форум новой темой.
Только начал изучать С++, пытаюсь разобраться в работе ввода-вывода и не очень понимаю, почему после использования объекта cin идет переход на новую строку. Вначале думал, что это происходит засчет передачи символа новой строки клавишей ввода, но и при использовании функции cin.getline(), где символ новой строки заменяется на \0, и при использовании cin.get(), где он отбрасывается и остаётся во входной очереди, в консоли всё равно происходит переход на новую строку. Получается, этот переход заложен где-то в определении самого объекта cin? Или я что-то неправильно понимаю.
Гугл ответа не дал, буду благодарен за объяснение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2016, 15:59     Убрать переход на новую строку после "cin"
Еще ссылки по теме:
Объясните разницу между "cin.getline" и "std::getline" C++
C++ Как найти строку которая перед "=" и после
C++ Ввести строку символов после чего заменить все буквы "а" на ноль
C++ Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1
Найти все вхождения в строку последовательности символов "сто" и заменить на "100" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fire_Rising
10 / 11 / 2
Регистрация: 11.05.2016
Сообщений: 113
27.07.2016, 15:59     Убрать переход на новую строку после "cin" #28
DDyst, да, это уже заложено в самом объекте, также как и в scanf/printf
Yandex
Объявления
27.07.2016, 15:59     Убрать переход на новую строку после "cin"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru