添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
刚毅的针织衫  ·  Copy and transform ...·  1 年前    · 
爱笑的紫菜汤  ·  Guzzle ...·  1 年前    · 

c++ read lines from file into vector

在 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”的文件,然后逐行读取文件,并将每行解析为一个字符串向量。解析过程使用了正则表达式来分割每行中的逗号分隔字段。最后,程序遍历向量中的所有行,并将它们打印到控制台上。

希望以上代码能够帮助你读取文件中的行并将其存储到向量中。

  •