c++ - 有没有办法从文本文件中读取并将单个数据存储为不同的变量?
问题描述
我正在开发这个程序:
创建一个模拟 ATM 机的程序。您必须创建一个名为“ATM”的类,该类将具有以下成员函数:
在屏幕上创建问候语,
向用户询问一个四位数的密码,
a) 名为“pin”的外部文件必须包含以下四个 pin 以及所有者名称和余额:
拉里 1234 200 美元
萌5678 $350
露西 0007 $600
雪莉 9876 535 美元
b) 用户输入的 pin 必须与存储的 pin 之一匹配以允许访问事务。
c) 3次尝试不成功后,告知用户账号被冻结,必须联系客服。
成功输入密码后,用他们的名字问候用户。
创建一个屏幕,询问用户是否要取款或存款或查看余额。
初始化 $500 的初始机器余额。根据存款和取款跟踪余额。
不允许用户提取比机器中当前更多的钱。
将提取的金额限制为 400 美元。
程序必须在一个连续循环上运行。
我不知道如何做 2b 和 3。我认为我应该为 4 个不同的人创建 4 个不同的对象,每个对象 1 行,然后在对象中分离名称、引脚和平衡,但我不太清楚确定该怎么做。
我想我应该getline()
在循环中使用类似的东西将线条分成 4 个对象,然后fin >> name >> pin >> balance;
用来区分name
、pin
和balance
,但我无法弄清楚。
如果我做错了,那么我真的很感激朝着正确的方向轻推。
解决方案
如果您正在从输入流中读取,您基本上可以这样做:
struct User {
std::string name;
int pin;
int amnt;
};
User read_user(std::istream& stream) {
User user;
// Reads in the username (this assumes the username doesn't contain a space)
stream >> user.name;
// Reads in the pin as an integer
stream >> user.pin;
stream.ignore(2); //Ignore the extra space and dollar sign
// Reads in the dollar amount as an integer
stream >> user.amnt;
// Returns the user
return user;
}
这将允许您从文件流中读取std::cin
或从文件流中读取,并将返回用户名、密码和数量。
我们可以像这样读取多个用户。基本上,我们只是read
多次调用。
std::vector<User> read_users(std::istream& stream, int n) {
std::vector<User> users;
for(int i = 0; i < n; i++) {
users.push_back(read_user(stream));
}
return users;
}
这将读取尽可能多的用户。
读入文件中的所有用户
我们还可以读入一个文件中的所有用户。
std::vector<User> read_all_users(std::istream& stream) {
std::vector<User> users;
while(true) // Checks that there's stuff left in the stream
{
User u = read_user(stream); // Try reading a user
if(not stream) break; // If there was nothing left to read, exit
users.push_back(u);
}
return users;
}
示例用法:
我们将打开一个名为 的文件users.txt
,并将它们全部读入。然后,我们将打印出每个用户的姓名、密码和帐户余额。
int main() {
std::ifstream user_file("users.txt");
std::vector<User> users = read_all_users(user_file);
// This prints out the name, pin, and balance of each user
for(User& user : users) {
std::cout << "Name: " << user.name << '\n';
std::cout << "Pin: " << user.pin << '\n';
std::cout << "Amnt: " << user.amnt << '\n';
}
// Do stuff with the list of users
}
推荐阅读
- javascript - 如何使用 javascript 附加一个 li 和链接元素
- python - 无法在 Python 中导入已安装的包
- nginx - 在 Kubernetes 中找不到具有 OAuth2 身份验证 404 页面的 Nginx Ingress
- php - Symfony @Route 注释 i18n:是否可以对未明确声明的语言进行后备?
- laravel - 使用 Laravel 过滤表下拉 livewire
- docker - 使用 buildkit 和 mirror.gcr.io 构建 Docker 在未缓存的图像上失败
- windows - 在 Windows 上使用 gettext 的 CMake 项目
- php - 当 include_once 在文件中时,PHP localhost 页面不加载
- vb.net - 查找列表框的索引
- django - 如何将教师学生功能植入 django?