c++ - 如何从 C/C++ 中的文本文件中读取一行?

标签 c++ c

在进行了详尽的谷歌搜索并访问了许多论坛之后,我还没有为这个问题找到一个好的全面答案。很多论坛建议使用 get 行 istream& getline (char* s, streamsize n) 函数。我的问题是,如果我不知道每行的长度是多少并且无法预测大小可能是什么?还有它在 C 中的等价物是什么?

c/c++ 中是否有任何特定函数可以每次从文本文件中读取一行?

解释,代码片段对我有很大帮助。

最佳答案

在 C++ 中,您可以使用全局函数 std::getline,它接受一个字符串和一个流以及一个可选的分隔符并读取 1 行,直到达到指定的分隔符。一个例子:

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

int main() {
    std::ifstream input("filename.txt");
    std::string line;

    while( std::getline( input, line ) ) {
        std::cout<<line<<'\n';
    }

    return 0;
}

此程序从文件中读取每一行并将其回显到控制台。

对于 C,您可能正在考虑使用 fgets,我已经有一段时间没有使用 C,这意味着我有点生疏,但我相信您可以使用它来模拟功能上面的 C++ 程序是这样的:

#include <stdio.h>

int main() {
    char line[1024];
    FILE *fp = fopen("filename.txt","r");

    //Checks if file is empty
    if( fp == NULL ) {                       
        return 1;
    }

    while( fgets(line,1024,fp) ) {
        printf("%s\n",line);
    }

    return 0;
}

限制是该行不能超过您正在读取的缓冲区的最大长度。

关于c++ - 如何从 C/C++ 中的文本文件中读取一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081289/

相关文章:

c - 具有以下要求的适用于 Windows 的简单 2D 图形 C 库?

java - CPU缓存在C编程中无效?

c++ - Qt 列出类的属性

c++ - 我在一维数组中渲染矩形的算法有什么问题?

c++ - C++ 中的 MATLAB 等效项

c++ - memset 可以用于多字节类型和非零值吗

c++ - 检查输出顺序是否正确

c - 有没有办法从未知字节设置/清除位,同时保持所有其他位不变?

c - 我该怎么做才能始终定义 CLOCK_MONOTONIC?

c - 使用 3 轴加速度计和陀螺仪获取方向