2

我需要制作一个存储用户名和密码的程序。我想将它们存储在 json 文件中。我已经制作了一个可以做到这一点的程序,但是它会删除旧的输入并将它们重写为新的。

int main()
{
char pass[12];
char user[12];

std::ofstream o;

o.open("logins.json");

json j;

    system("cls");
    std::cout << "Username: ";
    std::cin >> user;
    std::cout << "Password: ";
    std::cin >> pass;

    j[user]["Username"] = user;
    j[user]["Password"] = pass;

    o << std::setw(4) << j << std::endl;
}

例如我们输入用户名:admin,密码:admin。它创建一个 json 文件并存储它们:

{
"admin": {
    "Username": "admin",
    "Password": "admin"
}

}

但是当我再次运行程序并且这次输入用户名:用户,密码:用户时,它将管理员替换为用户。所以基本上它只存储一个输入。但我需要它来存储所有这些。所以我以后可以访问它们。

这不好。你能帮我解决这个问题或提出其他建议吗?

4

1 回答 1

1

每次运行此应用程序时,它都会重写文件logins.json而忽略其现有内容。

如果你想编辑 json 文件,你需要先加载它,解码 json,修改 json,然后将 json 序列化回文件覆盖它。

例如:

int main() {
    json j;
    {
        std::ifstream i("logins.json");
        if(i.is_open())
            i >> j;
    }

    system("cls");
    std::string pass;
    std::string user;
    std::cout << "Username: ";
    std::cin >> user;
    std::cout << "Password: ";
    std::cin >> pass;

    j[user]["Username"] = user;
    j[user]["Password"] = pass;

    std::ofstream o("logins.json");
    o << std::setw(4) << j << '\n';
}
于 2019-01-23T10:29:25.913 回答