c++ - 在 C++ 中,我将如何从文本文件中获取特定行并将其存储在 char vector 中?

标签 c++ vector char getline

我想让我的程序打开一个文本文件,转到特定行(例如,第 18 行)并将该行上的每个字符存储在一个字符 vector 中。

我对一般的编程还很陌生,所以这可能不是最好的方法,但这是我打算做的:

1) 获取特定行并将其存储在字符串中

2) 将该字符串转换为字符 vector 。我使用的是 vector 而不是数组,因此我可以使用 pushback() 使 vector 达到所需的确切大小,而不是在数组中分配太多或太少。

我可以很好地完成第 2 步,但我在第 1 步时遇到了问题。如何让它转到特定行?

最佳答案

只读所有行并忽略那些你不感兴趣的:

#include <iostream>
#include <fstream>
#include <string>

int main()
{
        std::ifstream file("file.ext");
        std::string line;
        unsigned int line_number(1);
        const unsigned int requested_line_number(4);
        while (std::getline(file, line))
        {
                if (line_number == requested_line_number)
                {
                        std::cout << line << "\n";
                }
                line_number++;
        }
}

这段代码当然没有错误处理,自然地,您不会希望在大多数时候对行号进行硬编码,但您明白了。

此外,我真的不明白 char vector/数组的用途。使用 std::string 来满足您的字符串处理需求,这就是它的用途。

关于c++ - 在 C++ 中,我将如何从文本文件中获取特定行并将其存储在 char vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206824/

相关文章:

C++ - 更快地向下转换树节点的子节点?

c++ - STL/ranges 算法计算加权平均值

python - 除以矩阵的向量列

c++ - 进行变换的最快方法(移动、旋转、缩放)

c - 为什么我不能重用 c = getchar();在 str1 上使用后在 str2 上? (C)

java - 将 unicode 字符转换为 int 会给出错误的代码

c++ - 通过构造函数设置子类属性 : Bad practice?

c++ - 从菜单中选择时如何只绘制矩形?

c++ - 为什么 STD vector 在分配时不调用默认构造函数?

C --- 删除字符串中的所有多余空格,不包括指定字符之间的字符