如何在文件中保留文本?

时间:2019-05-18 16:39:49

标签: c++

所以我创建了一个程序,当您在控制台中写入“ user.create”时,它将告诉您输入名称和密码,然后,用户名和密码将被写入文本文件“ nice”中。 txt”,但是每次启动程序时,都会清除“ nice.txt”,如何在需要的地方留文本并阅读?!

这是示例代码:

#include <iostream>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
fstream file_to_create;
file_to_create.open("nice.txt");
ifstream read("nice.txt");
ofstream out("nice.txt");
    string input = " ";
    while (1) {
        cin >> input;
        if (input == "app.exit")
            return 0;
        else if (input == "user.create") {
            string name, password;
            cout << "create user->\n";
            cout << "name:";
            cin >> name;
            cout << "password:";
            cin >> password;
            out << name << '\n' << password << '\n';
            cout << "user created.\n";
        } else if (input == "user.access") {
            string name, password;
            cout << "access user->\n";
            cout << "name:";
            cin >> name;
            cout << "password:";
            cin >> password;
            string look_name, look_password;
            bool found = 0;
            while (read >> look_name >> look_password) {
                if (look_name == name &&        look_password == password) {
                    cout << "user " << look_name    << " is now connected.\n";
                    found = 1;
                }
            }
            if (!found)cout << "user not found.\n";
        }
    }
}

基本上,当您键入“ user.access”时,它应该从“ nice.txt”中读取文本 这是空的,因为每次执行.exe时都会清除该

1 个答案:

答案 0 :(得分:0)

您需要使用append mode打开文件。打开书写时,默认模式为std::ios::out。此模式将光标移动到文件的开头,如果您在文件上写了一些文本,它将覆盖旧数据。

您需要使用std::ios::app。此模式将光标移到文件末尾,避免覆盖。

更改:

ofstream out("nice.txt");

收件人:

ofstream out("nice.txt", std::ios::app);

您可以了解有关此here的更多信息。