MFC用c++在文本文件中查询个人信息,并用结构体数组分别显示到编辑框
时间: 2024-02-23 17:56:42 浏览: 82
好的,我理解了你的问题。首先,我们需要定义一个结构体来存储个人信息,例如:
```c++
struct Person {
string name;
int age;
string gender;
string address;
};
```
接着,我们需要读取文本文件中的数据,并将其存储到结构体数组中。可以使用以下代码:
```c++
vector<Person> people; // 定义一个存储 Person 结构体的 vector
ifstream file("people.txt"); // 打开文件
if (file.fail()) { // 判断文件是否打开成功
MessageBox("无法打开文件!", "错误", MB_OK | MB_ICONERROR);
return;
}
string line;
while (getline(file, line)) { // 逐行读取文件中的数据
stringstream ss(line); // 将每行数据转换为 stringstream 对象
Person person;
getline(ss, person.name, ','); // 以逗号为分隔符,读取姓名
ss >> person.age; // 读取年龄
ss.ignore(); // 忽略逗号
getline(ss, person.gender, ','); // 以逗号为分隔符,读取性别
getline(ss, person.address); // 读取地址
people.push_back(person); // 将 Person 结构体添加到 vector 中
}
```
读取完毕后,我们可以将结构体数组中的数据显示到编辑框中。假设我们有四个编辑框,分别用于显示姓名、年龄、性别和地址,可以使用以下代码:
```c++
for (int i = 0; i < people.size(); i++) { // 遍历结构体数组
// 将每个人的信息显示到编辑框中
SetDlgItemText(IDC_EDIT_NAME, CString(people[i].name.c_str()));
SetDlgItemInt(IDC_EDIT_AGE, people[i].age);
SetDlgItemText(IDC_EDIT_GENDER, CString(people[i].gender.c_str()));
SetDlgItemText(IDC_EDIT_ADDRESS, CString(people[i].address.c_str()));
}
```
注意,上面的代码中,`IDC_EDIT_NAME`、`IDC_EDIT_AGE`、`IDC_EDIT_GENDER` 和 `IDC_EDIT_ADDRESS` 分别是四个编辑框的控件 ID。这些 ID 可以在 MFC 应用程序的资源文件中定义。
希望这个回答能够帮到你!
阅读全文