【问题标题】:How do you read the previous character in a text file in C++如何在 C++ 中读取文本文件中的前一个字符
【发布时间】:2016-07-31 00:03:56
【问题描述】:

假设我在 C++ 上打开了一个文件,并且我已经读入了一些字符。有没有一种方法可以让我从文件中的当前位置看到前一个字符是什么?

【问题讨论】:

  • 通过将先前读取的内容存储在变量中? “我已经读到了一些字符”
  • 您是否有权访问您阅读的字符?
  • @WeatherVane 这太容易了。这个任务显然需要很多库调用。
  • @MartinJames .. 如下答案所示。

标签: c++ file ifstream next


【解决方案1】:

你可以使用 istream::seekg(),比如:

int prevChar = 0;
is.seekg(-2, is.cur); // -2 because we want to read the previous char, -1 will move the position to the current char again 
if (is.good()) {
  prevChar = is.get();
}

这会将当前读取位置移动到前一个字符。

【讨论】:

  • 我不太确定你的 -2。当我执行is.open("[...]", std::fstream::in | std::fstream::ate); 时,is.seekg(-1, is.cur); 似乎确实找到了我文件的最后一个字符。 -2 没有。
【解决方案2】:

iostream 类中有一个函数叫做 seekg(和 seekp)。它就像一个文件指针。如果要读取当前字符之前的字符,只需将指针向前移动一个字节(因为 char 只使用一个字节)。格式为:IOobjectName.seekg(-1, ios::cur);如果您想了解更多信息,请查看此网站! http://www.cplusplus.com/reference/istream/istream/seekg/希望这会有所帮助。

【讨论】:

    【解决方案3】:

    如果你知道字符在哪一行(也许是获取文件的长度,并计算已经读取的字符),你可以使用 seekg.例如:

    ifstream myFile;
    myFile.open(file);
    myFile.seekg(5); //fifth character from start
    

    【讨论】:

      【解决方案4】:

      您可以存储您读取的最后一行,并获取长度,然后通过将字符串修剪到长度来获取最后一个字符...

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 1970-01-01
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        相关资源
        最近更新 更多