C++ 获取线错误。如何避免此错误?"没有重载函数"getline"的实例



我正在尝试制作一个包含用户名和密码的文本文件。我想通过将输入字符串与文本文件中的每一行进行比较来检查用户名是否已被占用。我正在使用getline,但我收到此错误消息"没有重载函数"getline"的实例与参数列表匹配"。

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
void RegisterUsername() {
string username0;
string username1;
string user;
ofstream myfile;
myfile.open("Data.txt", ios::app);
cout << "Please enter your username:n";
cin >> username0;
cout << "Please reenter your username:n";
cin >> username1;
if (username0 == username1) {
myfile.open("Data.txt");
if (myfile.is_open) {
while (getline(myfile, user)) {
if (username0 == user) {
cout << "Username is taken. Please try again.";
RegisterUsername();
}
}
}
myfile << username0 << "n";
}
else {
cout << "Usernames did not match. Please try again.n";
RegisterUsername();
};
myfile.close();
};

int main()
{   
RegisterUsername();
RegisterPassword();
cin.get();
};

getline 函数需要一个 istream 和一个字符串,实际上您正在使用ofstream来打开文件,但有了这个,您无法从文件中读取任何内容,因为仅作为输出打开。

您可以在其中使用 ifstream 如果

if (username0 == username1) {
ifstream read_myfile ("Data.txt");
if (read_myfile.is_open) {
while (getline(read_myfile, user)) {
if (username0 == user) {
cout << "Username is taken. Please try again.";
RegisterUsername();
}
}
}
read_myfile.close();
myfile.open("Data.txt");
myfile << username0 << "n";
}

最新更新