我正在试验C++中的文件指针。在下面的代码中,获得的结果是0、30、10和12。这意味着如果我们执行seekp(),tellp()不会在追加模式下给出正确的结果。我期待tellp()在seekp()和附加数据后给我32。我知道在应用程序模式下,写入总是到最后,因此有这个疑问。结果是否意味着tellp()位置在追加模式下无关紧要?h1.txt文件的内容是:01234567891011121314151617181911,符合预期。ofstreamf1("h1.txt",ios::app|ios::out);if(!f1){cerr 最佳答案
我可以查询ostream对象是否已写入吗?对于ostringstream,可以使用if(!myOssObject.str().empty())一般情况如何,例如ofstream或cout或cerr? 最佳答案 一般没有。您可以通过tellp()查看在刷新(发送缓冲数据)之前写入了多少字符(或其他内容):Returnstheoutputpositionindicatorofthecurrentassociatedstreambufobject.cout0){//Thereissomedatawritten}刷新后,这些输出流将忘记它们
这段代码:#include#include#include#includeintmain(){std::remove("test.txt");std::fstreamf("test.txt",std::ios::in|std::ios::out|std::ios::binary|std::ios::trunc);std::cout>s;std::cout在gcc-4.4.5中给出以下输出14444即tellg和tellp都返回了预期的流位置4。虽然gcc-4.6.0给予:144-14我在哪里可以找到引用来告诉:第一种情况是正确的(gcc-4.6中的错误)第二种情况是正确的(gcc两种情
这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我只是想知道为什么成员函数tellg()在basic_istream中定义类和tellp()在basic_ostream中定义类有不同的名称。是因为basic_fstream源自basic_istream和basic_ostream?