Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果未输入块,不确定原因_C++_File_Fstream - Fatal编程技术网

C++ 如果未输入块,不确定原因

C++ 如果未输入块,不确定原因,c++,file,fstream,C++,File,Fstream,此函数用于读取文件的每一行,并将其与用户输入字符串进行比较,然后检查它们是否匹配。它基本上防止了文件中的重复信息。无论如何,程序没有进入我的“if(loginsFile.is_open())”语句,我不明白为什么 fstream loginsFile; loginsFile.open("C:/logins.txt", ios::in | ios::out | ios::trunc | ios :: app | ios:: ate); string username; string passwo

此函数用于读取文件的每一行,并将其与用户输入字符串进行比较,然后检查它们是否匹配。它基本上防止了文件中的重复信息。无论如何,程序没有进入我的“if(loginsFile.is_open())”语句,我不明白为什么

fstream loginsFile;
loginsFile.open("C:/logins.txt", ios::in | ios::out | ios::trunc | ios :: app | ios:: ate);

string username;
string password;
string info;
bool exists = true;
CheckingAccount cA;
SavingsAccount sA;

do {
    cout << "Enter Username: ";
    cin >> username;
    cout << "Enter Password: ";
    cin >> password;
    cout << endl;
    info = username + " " + password;
    if (loginsFile.is_open()){
        while (loginsFile.good()){
            string line;
            getline(loginsFile, line);
            cout << "line is " << line.substr(line.find_last_of(" ")) << "\n" << "info is " << line.substr(line.find_last_of(" "));
            if (line.substr(line.find_last_of(" ")) == info.substr(0, info.find_last_of(" "))){
                exists = false;
                cout << "Username already exists!" << endl << "Program is not case sensitive!";
            } //end if
        } //end while
    } //end if
} while (exists == true); //end do while

loginsFile << info << endl;
loginsFile.close();
logins[info] = make_pair(cA, sA);
cout << info.substr(0, info.find(' ')) << " Has Been Successfully Registered!" << "\n" << "\n";
return logins;
fstream登录文件;
open(“C:/logins.txt”,ios::in | ios::out | ios::trunc | ios::app | ios::ate);
字符串用户名;
字符串密码;
字符串信息;
布尔存在=真;
核对账户cA;
萨文萨伯爵;
做{
cout>用户名;
cout>密码;

调用open()后不能检查failbit。如果设置了failbit,则open op失败。路径中的正斜杠可能会导致问题吗?

由于文件未打开,因此没有输入If语句。无法打开文件是因为无法将“std::ios::trunc”(truncate file removing all contents)和“std::ios::app”组合在一起(附加到文件末尾)因为它们相互矛盾。

检查此链接: 在剖面模式中,它表示:
如果模式同时设置了trunc和app,则打开操作会失败。如果设置了其中一个但未设置out,或者设置了app和in,则打开操作也会失败。

您使用的是window7吗?Windows 7不允许从
C:
进行读/写,请尝试将其放入
C:\\temp\\lognis.txt
路径实际上是我桌面上的一个文件夹。我只是把它剪短了我发布了这个问题。我没有使用windows 7。我使用的是windows xp。你可以用
ios::trunc
…打开文件,这不是删除了所有的行吗?如果是,你怎么能从中读取?如果不是,也许你没有对文件的写入权限?很好,Tony。Chuck,你确定它没有输入If,而不是不输入虽然这会导致无限的外部循环…但我猜无论如何都会发生这种情况?您是否已经在程序中的其他位置打开了文件?“如果流已经与文件关联(即,它已经打开),调用此函数将失败。”不,路径很好。我在程序的其他部分使用相同的路径,它工作得很好。问题是IF块I Simi不知道什么是故障位。这是C++的东西吗?LOL我是一个刚刚开始学习C++的java人,原谅我,我不知道所有的高级术语,你也可以检查故障的返回值()对于FFSUM,它检查了FrimBIT和BADBIT:作为java程序员,您可能会遇到一些事情,比如调用“OpenFILE”,如果失败,抛出异常。如果C++中的工作很多,您需要检查这些期望。“断言”将成为您的朋友。