需要有关监视txt文件和从该txt文件中读取新(最后)条目(word)的帮助

时间:2010-09-27 23:48:25

标签: c++

这是我第一次接触C ++。我必须制作一个程序,它将监视一个.txt或.doc文件,并从中读取每个新的(最后一个)条目(单词)。我现在能够做的事情是完全读取txt文件,但这不是重点,我甚至不能从txt文件中得到最后一个字,所以我非常感谢你对此的帮助。

提前谢谢大家!!!

2 个答案:

答案 0 :(得分:0)

不确定这是否是家庭作业,以防万一我试图通过“告诉太多”来避免破坏它,而是指出你可以使用的关键想法。

为避免读取整个文件,您可以先使用seekg方法将文件从末尾定位一定数量的字节,然后从那里执行“读到最后一个字”。

要正确执行“读到最后一个单词”任务(除了优先不一次读取整个文件的一个单词,请参见第一段)使用>>运算符和{{ 1}}作为左操作数,std::ifstream作为右操作数:只需将其放在std::string中,这样它就会继续读取,直到它有最后一个字。

BTW,请注意,读取while(!thestream.eof()) { ... }文件中的文本比从文本文件中读取文本要难得多,除非您可以使用合适的“.doc读取库”(标准C ++库)本身没有这样的功能。

答案 1 :(得分:0)

从C ++中读取MS Word是一项繁琐的工作;你需要解决混乱的COM接口。既然你说它是你第一次接触C ++,我的建议是专注于纯文本,即获取纯文本文件的最后一行。

我会做这样的事情。提供ReadFromEnd和FindRightmostLineSeparator的实现,它们应该是微不足道的,并初始化fileSize变量。

int const INITIAL_BUFFER_SIZE = 64;
int bufferSize = INITIAL_BUFFER_SIZE;
char* lastLine = NULL;
std::auto_ptr<char> buffer (new char[buffer_size]);
while(true) {
    ReadFromEnd(buffer, buffer_size);
    lastLine = FindRightmostLineSeparator(buffer);
    if (lastLine == NULL && bufferSize == fileSize)
        lastLine = buffer;
    if (lastLine)
        break;
    buffer_size *= 2;
    if (buffer_size > fileSize)
        bufferSize = fileSize;
    buffer.reset(new char[buffer_size]);
}
// lastLine contains the pointer to your last line