C++ C++;getline出错。如何避免这个错误&引用;没有重载函数的实例“;getline";

C++ C++;getline出错。如何避免这个错误&引用;没有重载函数的实例“;getline";,c++,getline,C++,Getline,我试图制作一个包含用户名和密码的文本文件。我想通过将输入字符串与文本文件中的每一行进行比较来检查是否已经使用了用户名。我正在使用getline,但收到错误消息“没有重载函数的实例”getline“与参数列表匹配” #包括 #包括 #包括 #包括 使用名称空间std; void RegisterUsername(){ 字符串username0; 字符串username1; 字符串用户; 流文件; 打开(“Data.txt”,ios::app); cout>username0; cout>usern

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

#包括
#包括
#包括
#包括
使用名称空间std;
void RegisterUsername(){
字符串username0;
字符串username1;
字符串用户;
流文件;
打开(“Data.txt”,ios::app);
cout>username0;
cout>username1;
if(username0==username1){
myfile.open(“Data.txt”);
如果(myfile.is_打开){
while(getline(myfile,user)){
if(username0==user){
cout函数需要一个istream和一个字符串,实际上您正在使用流的
来打开文件,但是使用此函数您无法从文件中读取任何内容,因为它仅作为输出打开

您可以在这个if中使用ifstream

if(username0==username1){
ifstream read_myfile(“Data.txt”);
if(read_myfile.is_open){
while(getline(read_myfile,user)){
if(username0==user){

cout
if(myfile.is\u open)
应该是
if(myfile.is\u open())
和将流的
更改为
ifstream
,则无法从输出流中读取。这并不能解决问题,而是养成了用有意义的值初始化对象的习惯,而不是默认构造对象并立即覆盖默认值。也就是说,将流的
更改为my file;myfile.open(“Data.txt”,ios::app);
到流我的文件的
(“Data.txt”,ios::app);
。另外,在那里打开文件,然后在循环中再次打开它有点奇怪。只需在需要的地方创建它。最后,您不需要调用
myfile.close();
。析构函数将执行此操作。此代码还有另一个问题。每次调用函数时,它都会打开文件“Data.txt”"。如果用户名不匹配,该函数将递归调用自身,这意味着它将在另一次尝试打开同一文件。通常,通过递归调用处理错误输入不是一个好主意。请编写一个循环。引用错误消息确实会得到好评,但我怀疑您的引用不完整。通常,这种排序of error message将另外指定在参数列表中看到的类型,后面通常是候选重载列表。这是为了让您能够以更少的猜测来查看哪个参数是错误的类型。
#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();
};