为什么 json 文件从 C++ 中删除旧输入?
Why is json file deleting old inputs from c++?
我需要制作一个程序来存储用户名和密码。我想将它们存储在 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"
}
}
但是当我再次 运行 程序并且这次输入 username:user、password:user 时,它会将 admin 替换为 user。所以基本上它只存储一个输入。但我需要它来存储所有这些。所以我以后可以访问它们。
那可不好。你能帮我解决这个问题或提出其他建议吗?
每次您 运行 此应用程序都会重写文件 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';
}
我需要制作一个程序来存储用户名和密码。我想将它们存储在 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"
}
}
但是当我再次 运行 程序并且这次输入 username:user、password:user 时,它会将 admin 替换为 user。所以基本上它只存储一个输入。但我需要它来存储所有这些。所以我以后可以访问它们。
那可不好。你能帮我解决这个问题或提出其他建议吗?
每次您 运行 此应用程序都会重写文件 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';
}