在文件中重新定位,并在c++; 我在C++中有一个问题,Telp函数。使用下面的代码,而不是将“AAAAAA”替换为“ccccc”,生成的文件将打印:“aaaaa\n”“CCCCCC\n” 流文件的; 打开(“log.txt”,ios::o

在文件中重新定位,并在c++; 我在C++中有一个问题,Telp函数。使用下面的代码,而不是将“AAAAAA”替换为“ccccc”,生成的文件将打印:“aaaaa\n”“CCCCCC\n” 流文件的; 打开(“log.txt”,ios::o,c++,C++,在文件中重新定位,并在c++; 我在C++中有一个问题,Telp函数。使用下面的代码,而不是将“AAAAAA”替换为“ccccc”,生成的文件将打印:“aaaaa\n”“CCCCCC\n” 流文件的; 打开(“log.txt”,ios::out | ios::app); file.write。。。。 long posLog1=file.tellp();->印刷品122 文件打印122 如果您不想使用“\n”,则应省略std::endl!我没有看到您替换任何字符串。我想在执行fil

在文件中重新定位,并在c++; 我在C++中有一个问题,Telp函数。使用下面的代码,而不是将“AAAAAA”替换为“ccccc”,生成的文件将打印:“aaaaa\n”“CCCCCC\n”

流文件的
;
打开(“log.txt”,ios::out | ios::app);
file.write。。。。
long posLog1=file.tellp();->印刷品122
文件打印122

如果您不想使用
“\n”
,则应省略
std::endl
!我没有看到您替换任何字符串。我想在执行file.seekp(posLog2-7)时替换文件中的字符串;我将std::endl替换为“\n”,但不起作用。我需要在这行的末尾加上“\n”。我使用了VS2010和你的代码,效果很好。@Jekyll,因为标准上是这么说的。关于在
filebuf
中查找,存在大量限制。特别是:“如果sp[位置参数]不是通过先前成功调用同一文件上的一个定位函数(
seekoff
seekpos
[由
seek[pg]
tell[pg]
调用)获得的,则效果是未定义的。”您无法进行任何运算,也无法期望它能够工作。(实际上,它将在Unix下工作,有时在Windows下工作。)
ofstream file;
file.open("log.txt", ios::out|ios::app);
file.write ....

long posLog1 = file.tellp(); -> prints 122
file << "AAAAAA" << endl;
long posLog2 = file.tellp(); -> prints 129
file.seekp (posLog2 - 7);   
long posLog2 = file.tellp(); -> prints 122
file << "CCCCCC" << endl;
long posLog3 = file.tellp(); -> prints 136 instead of 129