答案是使用std::getline和std::ifstream逐行读取文件并存入vector。包含、、头文件,创建ifstream对象打开文件,判断是否成功,用getline循环读取每行并存入vector中。

在C++中,逐行读取文件内容并存入vector是一个常见操作。可以使用标准库中的<fstream></fstream>、<string></string>和<vector></vector>来实现。
包含必要的头文件
要完成这个任务,需要引入以下头文件:
-
#include <fstream></fstream>:用于文件操作 -
#include <string></string>:用于处理字符串 -
#include <vector></vector>:用于存储多行数据 -
#include <iostream></iostream>(可选):用于输出调试或结果
使用std::getline逐行读取
核心是使用std::getline()函数配合std::ifstream对象,按行读取文本内容,并将每一行添加到vector<string></string>中。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
int main() {
std::vector<std::string> lines;
std::ifstream file("example.txt"); // 打开文件
std::string line;
if (!file.is_open()) {
std::cerr << "无法打开文件!" << std::endl;
return -1;
}
while (std::getline(file, line)) {
lines.push_back(line); // 将每行内容加入vector
}
file.close(); // 关闭文件
// 输出所有行,验证读取结果
for (const auto& l : lines) {
std::cout << l << std::endl;
}
return 0;
}
注意事项与建议
实际使用时需注意以下几点,避免常见问题:
立即学习“C++免费学习笔记(深入)”;
- 确保文件路径正确,相对路径基于程序运行目录
- 检查文件是否成功打开,避免空文件流导致无数据读取
-
std::getline()会自动去除行尾的换行符,不会保留在字符串中 - 如果文件包含中文或特殊编码(如UTF-8带BOM),需确保环境支持
- 大文件时注意内存占用,
vector会加载全部内容到内存











