我应该从文本文件中读取密码并将其与用户的输入进行比较。如果输入与文本文件中的密码匹配,程序应该打印消息"登录成功!"。
但是,即使键入的密码与文件中的密码匹配,我的程序也会打印出#34;登录失败"。我现在已经尝试了几次,觉得我打开文件的方式有问题。我的错误在哪里?
#include <iostream>
#include <string>
#include <fstream>
int main() {
std::string password;
std::string mypassword;
std::ifstream input;
input.open("text.txt");
input >>mypassword;
std::cout<<"Please enter your password: "<< std::endl;
std::cin>>password;
if (password == mypassword){
std::cout<<"Login successful!"<<std::endl;
}
else {
std::cout<<"Login failed!"<<std::endl;
}
input.close();
return 0;
}
答案 0 :(得分:0)
您需要确保您保存密码的文件当前存在于当前工作目录中。另外检查它是否成功打开。
input.open("text.txt");
if(input.is_open())
{
input >>mypassword;
cout<<"Please enter your password: "<< endl;
cin>>password;
if (password == mypassword)
cout<<"Login successful!"<<endl;
else
cout<<"Login failed!"<<endl;
}
else
cout <<"File not found!";
input.close();
答案 1 :(得分:0)
检查输入是否没有失败。此外,input.close();
在程序结束时是多余的。无论如何,该文件将自行关闭。声明变量尽可能接近初始化点。格式化代码。
#include <iostream>
#include <string>
#include <fstream>
int main() {
std::ifstream input("text.txt");
std::string mypassword;
if(!(input >>mypassword) || mypassword.size() == 0 ){
std::cout << "Could not read password from input file\n";
return -1;
}
input.close();
std::cout<<"Please enter your password: "<< std::endl;
std::string password;
std::cin>>password;
if (password == mypassword){
std::cout<<"Login successful!"<<std::endl;
}
else {
std::cout<<"Login failed!"<<std::endl;
}
return 0;
}