📅  最后修改于: 2023-12-03 14:51:25.230000             🧑  作者: Mango
在 C++ 中,我们经常需要存储一些数据,例如日志、配置文件等。这时候,我们可以使用向量(vector)来存储数据。
向量是 STL 中的一种容器,它可以动态存储数据,类似于数组,但是长度可以动态变化。
使用向量有以下几个好处:
在 C++ 中,可以使用文件流(fstream)实现文件的读写操作。
假设我们有一个保存学生信息的文件 students.txt,每一行包含一个学生的姓名和分数,用空格隔开。
我们可以使用以下代码将文件中的数据读入到一个向量中:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<pair<string, int>> students; // 学生向量,每个元素是一个学生的姓名和分数
ifstream fin("students.txt"); // 打开文件
if (!fin) { // 打开失败
cerr << "Failed to open file students.txt\n";
return -1;
}
// 读取文件中的数据,存储到向量中
string name;
int score;
while (fin >> name >> score) {
students.push_back(make_pair(name, score));
}
fin.close(); // 关闭文件
// 输出向量中存储的学生信息
cout << "Students:\n";
for (auto& student : students) {
cout << student.first << " " << student.second << "\n";
}
return 0;
}
上述代码中,我们定义了一个学生向量 students,每个元素是一个 pair,存储一个学生的姓名和分数。
然后我们使用文件流 ifstream 打开文件 students.txt,如果打开失败,则会输出错误信息并返回 -1。
接着使用 while 循环将文件中的数据逐行读取,使用 push_back 函数将每个学生的信息存储到向量中。
最后输出向量中存储的学生信息,使用 auto 关键字可以让编译器自动推导变量类型,更加方便。
除了从文件中读取数据,我们也可以将向量中的数据写入到文件中,只需要使用 ofstream 类就可以了。
以下是一个示例代码,将一个向量中的字符串存储到文件中:
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> words = {"hello", "world", "cpp"}; // 字符串向量
ofstream fout("words.txt"); // 打开文件
if (!fout) { // 打开失败
cerr << "Failed to open file words.txt\n";
return -1;
}
// 将字符串向量中的每个字符串写入到文件中
for (const auto& word : words) {
fout << word << "\n";
}
fout.close(); // 关闭文件
cout << "Done.\n";
return 0;
}
上述代码中,我们定义了一个字符串向量 words。
然后使用 ofstream 打开文件 words.txt,如果打开失败,则会输出错误信息并返回 -1。
接着使用 for 循环将向量中的每个字符串逐个写入到文件中,使用 \n 换行符来分隔每个字符串。
最后关闭文件,输出 Done.。
向量是 C++ 中常用的容器,可以动态存储数据。我们可以使用文件流来读写文件,将文件中的数据存储到向量中,或将向量中的数据写入到文件中。
使用 STL 容器和文件流可以使 C++ 程序变得更加高效、灵活、易于维护。