RG0609
@RG0609
Только начал изучать С++

Не понимаю, как правильно реализовать программу?

Не понимаю как правильно реализовать программу. Хочу что бы программа считывала значение из файла(например 2)
и передавала это число в переменную langsave.. Но считать он может только в string, при этом из стринга в инт значение передать не возможно. Помогите, мозг кипит уже.
Ах, да. За щит-код уж извините. Я начинаю только.

код

#include <iostream>
#include <Windows.h>
#include <fstream>
#include <string>

using namespace std;

string login;
string pass;
string login2;
string pass2;
ofstream fout;
ifstream fin;
int menu;
int lang;
int langsave = 0;
string langsave1;

int main()
{
	back:
	setlocale(LC_ALL, "Rus");
	string langpath = "D:\\RGWare Loader\\lang.txt";
	fin.open(langpath);
	getline(fin, langsave1);
	langsave = langsave1;
	if (langsave == 0)
	{
		
		cout << "Select language:\n";
		cout << "1. Русский\n";
		cout << "2. English\n";
		cout << "Select: ";
		cin >> lang;
		string langpath = "D:\\RGWare Loader\\lang.txt";
		fout.open(langpath);
		fout << lang;
		fout.close();
	}
	langsave = lang;
	if (lang == 2)
	{
		cout << "1. Authorization\n";
		cout << "2. Registration\n";
		cout << "Select: ";
		cin >> menu;
		if (menu == 2)
		{
			cout << "login: ";
			cin >> login;
			cout << "pass: ";
			cin >> pass;
			string path = "D:\\RGWare Loader\\" + login + ".txt";
			fout.open(path);
			if (fout.is_open())
			{
				cout << "File open: Success!\n";
			}
			else
			{
				cout << "File open: Error!\n";
				system("pause>nul");
				return 0;
			}
			fout << login;
			fout << "\n";
			fout << pass;
			fout.close();
			cout << "File close: Success!\n";
			cout << endl;
			goto back;
			system("pause>nul");
			return 0;
		}
		else if (menu == 1)
		{
			cout << "login: ";
			cin >> login;
			cout << "pass: ";
			cin >> pass;
			string path = "D:\\RGWare Loader\\" + login + ".txt";
			fin.open(path);
			if (fin.is_open())
			{
				cout << "File open: Success!\n";
			}
			else
			{
				cout << "File open: Error!\n";
				system("pause");
				return 0;
			}
			getline(fin, login2);
			getline(fin, pass2);
			if (login == login2 && pass == pass2)
			{
				cout << "Authorization: Success!\n";
			}
			else
			{
				cout << "Authorization: Error!\n";
				system("pause>nul");
				return 0;
			}
			fin.close();
			cout << "File close: Success!\n";
			cout << endl;
			goto back;
			system("pause>nul");
			return 0;
		}
	}
	else if (lang == 1)
	{
		cout << "1. Авторизация\n";
		cout << "2. Регистрация\n";
		cout << "Выбор: ";
		cin >> menu;
		if (menu == 2)
		{
			cout << "логин: ";
			cin >> login;
			cout << "пароль: ";
			cin >> pass;
			string path = "D:\\RGWare Loader\\" + login + ".txt";
			fout.open(path);
			if (fout.is_open())
			{
				cout << "Открытие файла: Успешно!\n";
			}
			else
			{
				cout << "Открытие файла: Ошибка!\n";
				system("pause>nul");
				return 0;
			}
			fout << login;
			fout << "\n";
			fout << pass;
			fout.close();
			cout << "Закрытие файла: Успешно!\n";
			cout << endl;
			goto back;
			system("pause>nul");
			return 0;
		}
		else if (menu == 1)
		{
			cout << "логин: ";
			cin >> login;
			cout << "пароль: ";
			cin >> pass;
			string path = "D:\\RGWare Loader\\" + login + ".txt";
			fin.open(path);
			if (fin.is_open())
			{
				cout << "Открытие файла: Успешно!\n";
			}
			else
			{
				cout << "Открытие файла: Ошибка!\n";
				system("pause>nul");
				return 0;
			}
			getline(fin, login2);
			getline(fin, pass2);
			if (login == login2 && pass == pass2)
			{
				cout << "Авторизация: Успешно!\n";
			}
			else
			{
				cout << "Авторизация: Ошибка!\n";
				system("pause>nul");
				return 0;
			}
			fin.close();
			cout << "Закрытие файла: Успешно!\n";
			cout << endl;
			goto back;
			system("pause>nul");
			return 0;
		}
	}
	else
	{
		cout << "Wrong language!\n";
		goto back;
	}
	system("pause>nul");
	return 0;
}

  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Во-первых, можно отлично читать из файла сразу число. Вы как с консоли числа вводите? Вот точно также, только из файла. Вы как строку-то читаете? Вот передавайте там не строку, а int условный. Ну, еще, если scanf-ом читаете, то надо туда %d вместо %s передавать. А так есть еще функции преобразования числа в строку. Читайте справки по atoi, sscanf, stringstream.
Ответ написан
0hquazEd
@0hquazEd
std::atoi(some_string.c_str())
Хотя даже так она не заработает правильно
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы