Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > cin для Win


Автор: Guest 18.8.2005, 21:47
А какие анлоги у функции cin для ОС Windows и 32 разрядного компилятора (С++)?

Автор: Void 18.8.2005, 21:53
std::cin ? (Кстати, это не функция, а глобальный объект типа std::istream).
Или нужно реализовать функциональность потоков средствами WinAPI?

Автор: Guest 18.8.2005, 22:08
Да, в компилере .net и Win32 нужно принять ввод пользователя...

Автор: Void 18.8.2005, 22:14
Цитата(Guest @ 19.8.2005, 00:08)
Да, в компилере .net и Win32 нужно принять ввод пользователя...

Так .NET или Win32 smile Точную версию компилятора и используемой платформы назовите.
Если обычный C++ - используйте std::cin (#include <iostream>)
Если .NET (C#, managed С++) - System.Console.In к вашим услугам.
Если по каким-то невероятным причинам вам нельзя использовать стандартную библиотеку - используйте WinAPI (GetStdHandle, ReadFile, etc).

Автор: Guest 18.8.2005, 22:22
Visual C++ .net приложение для Windows - <iostream> почему-то не работает.

GetStdHandle ,я правильно понял?

Автор: Void 18.8.2005, 22:35
Цитата(Guest @ 19.8.2005, 00:22)
Visual C++ .net приложение для Windows - <iostream> почему-то не работает.

Весьма странно. Дайте пожалуйста полную ошибку компилятора/линкера. Потому что консольный I/O на уровне WinAPI - это ненужный геморрой.

Автор: Guest 18.8.2005, 22:50
Сannot open file iostream.h
хотя в папках он есть я проверял.
почему-то ostream и cin больше ассоциируются с консольными программами дос...

Автор: Void 18.8.2005, 22:51
Нужно именно <iostream>, без расширения .h. iostream.h - это устаревший и нестандартный вариант.

Автор: Guest 18.8.2005, 22:55
ОК так значит сin должен работать? (я думал он как и cout только для дос)

#include <iostream>

Автор: Void 18.8.2005, 22:57
Обязательно. Потоки ввода-вывода (в т.ч. cin/cout/cerr) - это часть стандартной библиотеки C++, которая должна быть доступа везде.

Автор: Guest 18.8.2005, 23:01
спасибо, повоюю с компилером...

Автор: Hroft 19.8.2005, 11:35
Цитата(Guest @ 18.8.2005, 22:55)
(я думал он как и cout только для дос)

Вот это да... Какой еще ДОС? Где ты такое услышал? Это объекты классов, их реализацию можно и в ДОСе, и в Виндовсе, и в Линуксе, и ВООБЩЕ ВЕЗДЕ, для чего написаны компиляторы C++, использовать! Функции ДОС - это 21h прерывание, а не cout или cin.

Автор: mr.Anderson 19.8.2005, 16:07
Он имел в виду консоль, наверное. Я тож сначала ее ДОС'ом называл.

Автор: Guest 19.8.2005, 21:41
ага точно консоль чёрное окно кстати работает то оно всё равно под дос...

а с cin у меня всё же трабл:

#include <iostream>
using namespace std;

...


char myinput;

cin >> myinput;

---------------------------------------------------------------

error cin undeclarated indefined '>>'



Автор: mr.Anderson 19.8.2005, 21:56
Предположу, что проблема в том, что прога не знает, откуда считывать. Но это, наверное, неправильное предположение...
А вообще, чего вы мучаетесь? Сделайте вот так:
Код

#include <iostream.h>
void main()
{
...
char var;
cout<<"Your variable: "; cin>>var;
...
}

Нафига все эти мучения с iostream? Просто подрубайте iostream.h и будьте счастливы. smile

Автор: Guest 19.8.2005, 22:00
на iostream.h мой VS.net ругается.
не ругается если приложение консольное, а у меня, повторюсь, Win32

Автор: Void 19.8.2005, 22:02
Цитата(Guest @ 19.8.2005, 23:41)
а с cin у меня всё же трабл:
...
error cin undeclarated indefined '>>'

Какое забавное сообщение об ошибке... Что-то у вас неладное с компилятором творится smile
Дайте полный код и точное сообщение об ошибке.

Цитата(sim7 @ 19.8.2005, 23:56)
Просто подрубайте iostream.h и будьте счастливы.

Там чуть-чуть выше сказано, что компилятор не может найти такой файл.

Автор: Void 19.8.2005, 22:37
Черт! Прошу прощения за невнимательность smile То есть приложение неконсольное? В таком случае действительно непонятно, какой будет stdin... Однако у меня код компилируется (VC 7.1), просто ввод не работает. Так что пожелание по поводу точной ошибки и полного кода остается в силе.

Автор: mr.Anderson 20.8.2005, 11:08
То консольное, то не консольное. Я запутался! smile
Действительно, стоит привести код.

Автор: Guest 20.8.2005, 21:33
да да Win32 & windows.h

cin<<myinput; // проходит
//просто я сначала пробовал
cin.get(myinput);//этот не проходит

но ввод так или иначе не работает поэтому я спрашивал про аналоги...

Автор: Helicopterr 20.8.2005, 21:58
TranslateMessage();
и обрабатывать ввод в метке WM_CHAR
только параметры я не помню...

Автор: Helicopterr 23.8.2005, 22:10
Цитата(Hroft @ 19.8.2005, 11:35)
Вот это да... Какой еще ДОС? Где ты такое услышал? Это объекты классов, их реализацию можно и в ДОСе, и в Виндовсе, и в Линуксе, и ВООБЩЕ ВЕЗДЕ, для чего написаны компиляторы C++, использовать! Функции ДОС - это 21h прерывание, а не cout или cin.

"Существуют также объекты ввода-вывода для работы с текстом - cin, cout, cerr, clog, но они не совместимы с графическим интерфейсом сиситемы Windows."
Крис Паппас, Уильям Мюррей "Visual C++ .NET" (bhv Питер 2002)
Да и вообще это консольные операторы.

Автор: Hroft 24.8.2005, 10:55
Helicopterr
Все абсолютно верно! Но...
В принципе это возможно. Например, часть рабочего стола под консоль выделить. Или просто где-то в своей программе выводить. Кроме того, разве в моем посте есть упоминание графического интерфейса? Я о нем и не говорил, хотя, повторюсь, это возможно. И не надо называть объекты операторами. smile
ЗЫ: А что, прям в книжке написано "не совместимы"? smile

Автор: Helicopterr 25.8.2005, 23:24
Цитата(Hroft @ 24.8.2005, 10:55)
ЗЫ: А что, прям в книжке написано "не совместимы"? smile

да я всё подробно указал и ничего не придумал.
а ты не мог бы привести код в котором cin работает в программе для винды?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)