Суть моей задачи:
char logfile[100];
char logpass[100];
while (!fout.eof())
{
fout >> logfile;
fout >> logpass;
fout.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
};
int n = strlen(logfile);
for(int i=0;i<n;i++)
{
if(strcmp(logfile,login))
{
cout << "Данные совпадают." << endl;
}
else
cout << "\033[1;31mПользователя не существует.\033[0m" << endl;
}
Сделайте так - если хотите все собрать в одну строку:
string logfile;
string logpass;
for(string l,p; fout >> l >> p;
fout.ignore(std::numeric_limits<std::streamsize>::max(),'\n')) {
logfile += l + " ";
logpass += p + " ";
}
Так вы избегаете неприятностей:
logfile
и logpass
. eof()
вернет false
.Как сказали в комментариях вы просто перезаписываете переменные logfile
и logpass
.
Перепешите вывод из файла примерно так:
std::vector<std::string> logins;
std::vector<std::string> pass;
std::ifstream f( "file.txt" );
while (!f.eof())
{
std::string tmp;
f >> tmp;
logins.push_back(tmp);
f >> tmp;
pass.push_back( tmp );
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Объясните, что это за мура? Вроде как указатель на функцию, знак равенства сбивает с толку, не видел такой записи
Объясню суть проблемы: есть десктопное графическое приложение ,написанное на с++, появилась срочная необходимость доступа к нему через web браузер,...
Пользователь вводит размер фигуры сам и программа печатает в консоли прямоугольник следующим образом: