Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要有关监视txt文件和从该txt文件读取新(最后)条目(word)的帮助吗 这是我第一次接触C++。我必须制作一个程序来监视一个.txt或.doc文件,并从中读取每个新的(最后一个)条目(Word)。我现在只能做的是完全读取TXT文件,但这不是重点,我甚至不能从TXT文件中得到最后一个字,所以我非常感谢你的帮助。_C++ - Fatal编程技术网

需要有关监视txt文件和从该txt文件读取新(最后)条目(word)的帮助吗 这是我第一次接触C++。我必须制作一个程序来监视一个.txt或.doc文件,并从中读取每个新的(最后一个)条目(Word)。我现在只能做的是完全读取TXT文件,但这不是重点,我甚至不能从TXT文件中得到最后一个字,所以我非常感谢你的帮助。

需要有关监视txt文件和从该txt文件读取新(最后)条目(word)的帮助吗 这是我第一次接触C++。我必须制作一个程序来监视一个.txt或.doc文件,并从中读取每个新的(最后一个)条目(Word)。我现在只能做的是完全读取TXT文件,但这不是重点,我甚至不能从TXT文件中得到最后一个字,所以我非常感谢你的帮助。,c++,C++,提前谢谢大家 我不确定这是否是家庭作业,为了以防万一,我正试图通过“讲得太多”来避免破坏它,而是告诉你可以使用的关键思想 为了避免读取整个文件,您可以先使用该方法将文件定位到距离文件末尾一定数量的字节,然后从那里执行“读取到最后一个字” 要正确执行“读取到最后一个字”任务(净优化不一次读取整个文件的一个字,请参见第一段),请使用操作符,将std::ifstream作为左操作数,将std::string作为右操作数:只需将其放入而(!thestream.eof()){…}所以它会一直读到最后一个字

提前谢谢大家

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

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

要正确执行“读取到最后一个字”任务(净优化不一次读取整个文件的一个字,请参见第一段),请使用操作符,将
std::ifstream
作为左操作数,将
std::string
作为右操作数:只需将其放入
而(!thestream.eof()){…}
所以它会一直读到最后一个字


,注意从C++代码中读取文本。doc < /C>文件比从文本文件读取它要大几个数量级,除非你可以使用一个合适的“.doc读库”(标准C++库本身没有这样的功能)。

<>从C++中读取MS字是一项繁琐的任务;您将需要克服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
int const INITIAL\u BUFFER\u SIZE=64;
int bufferSize=初始缓冲区大小;
char*lastLine=NULL;
std::auto_ptr buffer(新字符[buffer_size]);
while(true){
ReadFromEnd(缓冲区、缓冲区大小);
lastLine=FindRightmostLineSeparator(缓冲区);
if(lastLine==NULL&&bufferSize==fileSize)
lastLine=缓冲区;
如果(最后一行)
打破
缓冲区大小*=2;
如果(缓冲区大小>文件大小)
bufferSize=文件大小;
重置(新字符[缓冲区大小]);
}
//lastLine包含指向最后一行的指针
有关windows,请参阅