13

在 C++ 中,fstream 库(或任何库)中是否有一个函数允许我在不提取的情况下读取一行到 '\n' 的分隔符?

我知道 peek() 函数允许程序在不提取的情况下“窥视”它读取的下一个字符,但我需要一个类似 peek() 的函数来做到这一点,但要针对整行。

4

1 回答 1

19

您可以使用 和 的组合来做到这getline一点。tellgseekg

#include <fstream>
#include <iostream>
#include <ios>


int main () {
    std::fstream fs(__FILE__);
    std::string line;

    // Get current position
    int len = fs.tellg();

    // Read line
    getline(fs, line);

    // Print first line in file
    std::cout << "First line: " << line << std::endl;

    // Return to position before "Read line".
    fs.seekg(len ,std::ios_base::beg);

    // Print whole file
    while (getline(fs ,line)) std::cout << line << std::endl;
}
于 2012-04-22T14:49:29.053 回答