使用反向函数并从 txt 文件中删除一定量信息的空格

Using reverse function and removing whitespace for a set amount of information from a txt file

我需要找到一种从文件中读取最后 6 行数据的方法。

例如,如果我有 1个 2个 3个 4个 5个 6个 7 8个 9 10

我需要阅读才能得到 10、9、8、7、6、5。

此方法输出文件中的最后 6 个数字,但它们是倒序的,我需要一种方法来反转它们并去除它打印出的空白。

我不确定如何使用 reverse 以及需要哪些参数 - http://en.cppreference.com/w/cpp/algorithm/reverse

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    char x;
    ifstream f("test.txt", ios::ate);
    streampos size = f.tellg();
    for (int var = 1; var <= size; var++){
        f.seekg(-var, ios::end);
        f.get(x);
        reverse(x);
        cout << x; 
    }
    cin.get();
    return 0;
}

我能找到的关于这类事情的很多信息都是从底部读取向量中的所有信息并反转它,这不是我需要的。

谁能指点一下?

此致

要在 "required order" 中获取它,您可以执行

for (int var = size; var > 0; var--){
    f.seekg(-var, ios::end);
    f.get(x);
    if(x!=' ') // check if x is not a whitespace
    cout << x; 
}

编辑:x 是 char 类型,它只能包含一个字符,白色 space 或数字,所以我们可以检查它是否是白色 space字符与否。

也代替了

streampos size = f.tellg();

size 应设置为您要从文件中提取的字符数。如果你这样离开它,它将显示文件的所有内容,因为最初 f.tellg() 将 return ios::beg ,其余的,循环如下。

std::reverse就是把内容或者一个容器倒过来。你在代码中所做的会产生编译错误。

reverse(x); // wrong x is of type char

string s;
for(input)
s.push_back(x); 
std::reverse(s.begin(),s.end()); // correct , will reverse the order of elements

阅读:http://www.cplusplus.com/reference/algorithm/reverse/,也有例子

已通过使用具有算法反向函数的向量来反向从文件中读入的数据来解决此问题。然后使用简单的 for 循环将其用于读取最后 6 条数据。