Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2010, 16:51   #1
skript88
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию Username

Всем привет. Мне нужна ваша помощь.
Пишу программку:
открывается - спрашивает имя пользователя (admin/user) - если admin, то требует пароль. Никак не могу заставить его читать слова в поле username. Помогите пожалуйста, может я вообще неправильно делаю?

#include <iostream>
using namespace std;

Код:
int main (){

	string user; //user - переменная имени пользователя
	int pass;
	cout<<"Hello! Please, put your name: ";
	cin>>user; /*Ошибка 1	error C2679: бинарный '>>': не найден оператор, 
принимающий правый операнд типа 'std::string' 
(или приемлемое преобразование отсутствует)*/
	cout<<'\n';
	if (user==admin) {//Ошибка 2 error C2065: admin: необъявленный идентификатор
		cout<<"hi, admin!\n";
		{
			cout<<"please, enter your password: ";
			cin>>pass;
			while (pass==1219512195);
		}
		cout<<'\n';
		if (pass==1219512195) cout<<"OK! Please, enter\n!";
		else cout<<"Password is wrong\n";
	}
	else cout<<"Hello, user!\n";

 return 0;
}

Последний раз редактировалось Stilet; 08.02.2010 в 08:41.
skript88 вне форума Ответить с цитированием
Старый 07.02.2010, 17:12   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

хорошо, хоть теги поставил, правда не там немного.
нуно для юзера юзать массив символов.
admin заключать в кавычки.

эту весчь:

while (pass==1219512195);

убери как ненужную.

и чтоб не было потом вопросов, в конце поставь getchar();
если всё равно консоль будет закрываться, ещё один поставь.
Carbon вне форума Ответить с цитированием
Старый 07.02.2010, 17:26   #3
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

using namespace std;

попробуй поставь
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 07.02.2010, 17:31   #4
skript88
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от RoS Посмотреть сообщение
using namespace std;

попробуй поставь
Да это есть у меня)
skript88 вне форума Ответить с цитированием
Старый 07.02.2010, 17:32   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Carbon Посмотреть сообщение
нуно для юзера юзать массив символов.
Или, если уж захотелось (или позволили) с STL работать, добавить #include <string> .
Vago вне форума Ответить с цитированием
Старый 07.02.2010, 17:40   #6
skript88
 
Регистрация: 24.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Или, если уж захотелось (или позволили) с STL работать, добавить #include <string> .
т.е. можно вместо массива символов использовать #include <string>?

И можно ли будет и в том и в другом случае использовать его в if, как у меня в примере: if (user==admin)
skript88 вне форума Ответить с цитированием
Старый 07.02.2010, 17:48   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Скорее уж
Код:
if (user == "admin")
если использовать std::string, или
Код:
if (strcmp(user, "admin"))
если массив char'ов.

Кстати, у меня в строка нормально читается.

И, судя по while, там предполагался цикл до тех пор, пока не будет введен правильный пароль? Или нет?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 07.02.2010 в 17:54.
Гром вне форума Ответить с цитированием
Старый 07.02.2010, 17:51   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Или, если уж захотелось (или позволили) с STL работать, добавить #include <string> .
Причём здесь это? Если бы была определена операция ввода/вывода для типа std::string, то там подключался бы хедер string и значит нам не нужно бы было его дополнительно подключать.
Мне когда надо было читать/записывать в поток переменную типа std::string, я определял глобально:
Код:
istream & operator >> ( istream &, std::string & );
ostream & operator << ( ostream &, const std::string & );
Carbon вне форума Ответить с цитированием
Старый 07.02.2010, 17:54   #9
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Код:
if (strcmp(user, "admin"))
Я бы даже сказал:
Код:
if (strcmp(user, "admin") == 0)
Carbon вне форума Ответить с цитированием
Старый 07.02.2010, 17:56   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Да, конечно. Очепятался...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц