@DeHaker
Только начал изучать C++

Почему cout не выводит сообщение?

Вот весь код:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

bool IsLoggedIn()
{
	string username, password, un, pw;
	cout << "Enter username: "; cin >> username;
	cout << "Enter password: "; cin >> password;

	ifstream read("D:\\" + username + ".txt");
	getline(read, un);
	getline(read, pw);

	if (un == username && pw == password)
	{
		return true;

	}
	else
	{
		return false;
	}
}


int main()
{
	int choice;

	cout << "1: Register\n2: Login\n Your choice: "; cin >> choice;
	if (choice == 1)
	{
		string username, password;

		cout << "select a username: "; cin >> username;
		cout << "select a password: "; cin >> password;

		ofstream file;
		file.open("D:\\" + username + ".txt");
		file << username << endl << password;
		file.close();

		main();
	}
	else if (choice == 2)
	{
		bool status = IsLoggedIn();

		if (!status)
		cout << "False Login!\n";
		system("pause");
		return 0;
	}
	else
	{
		cout << "Succesfully logged in!\n";
		system("pause");
		return 1;
	}
}
Вроде ведь всё верно написано.
  • Вопрос задан
  • 868 просмотров
Решения вопроса 1
Casper-SC
@Casper-SC
Программист (.NET)
Ты не вызывал показ сообщения в случае успеха. Немного причесал код и удалил то, что ты можешь просто скопировать из своего кода обратно. Я бы на твоём месте сразу учился писать код так, чтобы каждая функция отвечала за какой-то свой один функционал. Не смешивай всё в одном месте.

#ifdef _WIN32
#include <windows.h>
#endif

#include <iostream>
#include <fstream>
#include <string>

bool IsLoggedIn()
{
    using namespace std;

   // ...

    return un == username && pw == password;
}

int main()
{
    using namespace std;

#ifdef _WIN32
    // https://habr.com/ru/sandbox/108750/
    // Устраняет проблемы выводом кириллицы на консоль Windows
    // Файл должен быть сохранён с кодировкой Windows 1251
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
#endif

    int choice;
    do
    {
        cout << "1: Register\n2: Login\n Your choice: ";
        cin >> choice;

        if (choice == 1)
        {
            // ...
        }
        else if (choice == 2)
        {
            bool status = IsLoggedIn();
            if (!status)
            {
                cout << "False Login!\n";
            }
            else
            {
                cout << "Succesfully logged in!\n";
            }

#ifdef _WIN32
            system("pause");
#endif
            return status ? 1 : 0;
        }

    } while (choice == 1);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы