使用fstream将文件数据从当前位置保存到文件末尾

时间:2017-02-13 13:01:25

标签: c++ file fstream ifstream

我遇到的情况是我遍历文件的前64行并将每行保存到字符串中。文件的其余部分未知。它可能是一行或多行。 我知道文件开头会有64行,但我不知道它们的大小。

如何将文件的其余部分保存为字符串?

这就是我目前所拥有的:

std::ifstream signatureFile(fileName);

for (int i = 0; i < 64; ++i) {
    std::string tempString;
    //read the line
    signatureFile >> tempString;
    //do other processing of string
}
std::string restOfFile;
//save the rest of the file into restOfFile

感谢回复,这就是我的工作方式:

std::ifstream signatureFile(fileName);

for (int i = 0; i < 64; ++i) {
    std::string tempString;
    //read the line
    //using getline prevents extra line break when reading the rest of file
    std::getline(signatureFile, tempString);
    //do other processing of string
}

//save the rest of the file into restOfFile
std::string restOfFile{ std::istreambuf_iterator<char>{signatureFile},
        std::istreambuf_iterator<char>{} };
signatureFile.close();

2 个答案:

答案 0 :(得分:4)

@string/FABRIC_API_KEY的一个构造函数是一个模板,它将两个迭代器作为参数,一个开始和一个结束迭代器,并从迭代器定义的序列构造一个字符串。

恰好恰好std::istreambuf_iterator提供了一个合适的输入迭代器来迭代输入流的内容:

std::string

答案 1 :(得分:0)

您可以使用字符串缓冲区。

#include <sstream>

// ...

stringbuf buf;
signatureFile.get(buf);
string restOfFile = buf.str();