在 C++ 中,读取文件中的行并将其存储到向量(vector)中可以使用以下方法:
#include <fstream>
#include <vector>
#include <string>
int main() {
std::ifstream file("filename.txt");
std::vector<std::string> lines;
std::string line;
while (std::getline(file, line)) {
lines.push_back(line);
// 打印向量中的所有行
for (const auto& l : lines) {
std::cout << l << std::endl;
return 0;
这个程序首先打开名为“filename.txt”的文件,然后逐行读取文件,并将每行存储在一个名为“lines”的字符串向量中。最后,程序遍历向量中的所有行,并将它们打印到控制台上。
请注意,在使用“getline”函数时,可以将它的第二个参数省略不写,这样将默认使用换行符“\n”作为行的结束符。
如果你需要读取一个 CSV 文件(每行包含多个逗号分隔的字段),则可以使用 C++11 的 std::regex 库来解析每行。以下是一个读取 CSV 文件并将其存储到向量中的示例代码:
#include <fstream>
#include <vector>
#include <string>
#include <regex>
int main() {
std::ifstream file("filename.csv");
std::vector<std::vector<std::string>> rows;
std::string line;
while (std::getline(file, line)) {
std::vector<std::string> fields;
std::regex rgx(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
std::sregex_token_iterator iter(line.begin(), line.end(), rgx, -1);
std::sregex_token_iterator end;
while (iter != end) {
fields.push_back(*iter++);
rows.push_back(fields);
// 打印向量中的所有行
for (const auto& row : rows) {
for (const auto& field : row) {
std::cout << field << ",";
std::cout << std::endl;
return 0;
这个程序首先打开名为“filename.csv”的文件,然后逐行读取文件,并将每行解析为一个字符串向量。解析过程使用了正则表达式来分割每行中的逗号分隔字段。最后,程序遍历向量中的所有行,并将它们打印到控制台上。
希望以上代码能够帮助你读取文件中的行并将其存储到向量中。