C++如何向文件存入信息 并从文件读取信息
时间: 2024-01-27 20:03:23 浏览: 24
C++中向文件存入信息可以使用文件流对象,如ofstream类,示例代码如下:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 打开文件并创建文件流对象
ofstream ofs("data.txt");
// 向文件中写入数据
ofs << "Hello, world!" << endl;
// 关闭文件
ofs.close();
// 从文件中读取数据
ifstream ifs("data.txt");
string data;
getline(ifs, data);
// 输出读取的数据
cout << data << endl;
// 关闭文件
ifs.close();
return 0;
}
```
这段代码首先打开一个名为"data.txt"的文件,并创建了一个名为ofs的ofstream对象。之后,向该文件中写入了一个字符串"Hello, world!"并在字符串末尾添加了一个换行符。之后,关闭了该文件。
之后,又打开了"data.txt"文件,并创建了一个名为ifs的ifstream对象。通过getline函数从文件中读取了一行字符串,并将其存储在名为data的string变量中。最后,输出了读取的字符串,并关闭了该文件。
这样就完成了向文件存入信息并从文件读取信息的过程。
相关问题
c++信息存入txt文件的读取和存入
要将 C++ 中的信息存储到文本文件中,可以使用文件流(fstream)类。以下是一个简单的例子:
```c++
#include <iostream>
#include <fstream> // 包含文件流类头文件
using namespace std;
int main() {
// 写入文件
ofstream file_out("data.txt"); // 创建输出文件流对象
if (file_out.is_open()) { // 判断文件是否打开成功
file_out << "Hello world!" << endl; // 向文件中写入数据
file_out.close(); // 关闭文件流
} else {
cout << "Failed to open file." << endl;
}
// 读取文件
ifstream file_in("data.txt"); // 创建输入文件流对象
if (file_in.is_open()) { // 判断文件是否打开成功
string line;
while (getline(file_in, line)) { // 逐行读取文件内容
cout << line << endl; // 输出读取的内容
}
file_in.close(); // 关闭文件流
} else {
cout << "Failed to open file." << endl;
}
return 0;
}
```
上面的代码中,我们使用 ofstream 类创建了一个输出文件流对象 file_out,并将其指向文件名为 "data.txt" 的文件。然后,我们可以使用 `<<` 运算符向文件中写入数据。最后,我们使用 close() 方法关闭文件流对象。
接着,我们使用 ifstream 类创建了一个输入文件流对象 file_in,并将其指向同样的文件名。然后,我们使用 getline() 方法逐行读取文件内容,并使用 cout 输出到控制台。最后,我们也使用 close() 方法关闭文件流对象。
需要注意的是,当文件流对象创建成功后,需要使用 is_open() 方法检查文件是否打开成功。如果文件打开失败,需要进行相应的错误处理。
使用c++从文件中读取学生信息存入结构体
假设文件中的学生信息以以下形式存储:
```
张三 18 男
李四 19 女
王五 20 男
```
则可以使用以下代码将文件中的学生信息读入结构体中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
struct student {
char name[20];
int age;
char gender[10];
};
int main() {
struct student students[MAX_STUDENT_NUM];
int num = 0;
FILE *fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
while (fscanf(fp, "%s%d%s", students[num].name, &students[num].age, students[num].gender) != EOF) {
num++;
}
fclose(fp);
for (int i = 0; i < num; i++) {
printf("name: %s, age: %d, gender: %s\n", students[i].name, students[i].age, students[i].gender);
}
return 0;
}
```
在此代码中,我们首先定义了一个结构体 `student`,用来存储每一个学生的信息。然后定义了一个数组 `students` 来存储所有的学生信息,数组的大小为 `MAX_STUDENT_NUM`。接着我们打开了文件 `students.txt`,并使用 `fscanf` 函数从文件中读取学生的姓名、年龄和性别,并将这些信息存入结构体数组中。最后我们遍历结构体数组,输出所有学生的信息。
需要注意的是,本代码中没有对读取文件时的错误进行处理。在实际应用中,我们需要对文件读取错误进行处理,以保证程序的健壮性。