gpt4 book ai didi

C++ seekp(0,ios::end) 不工作

转载 作者:行者123 更新时间:2023-11-30 05:34:23 27 4
gpt4 key购买 nike

为我糟糕的英语道歉。我被 C++ 中的 fstream 困住了。这是我的代码。

#include<iostream>  
#include<fstream>
using namespace std;

struct TestStruct
{
int a;
char str[30];
TestStruct(int a_, const char* s)
{
a = a_;
strcpy_s(str,sizeof(char)*30, s);
}
TestStruct() = default;
};

int main()
{
fstream output("out.bin", ios::out|ios::binary);
output.seekp(0,ios::end);
cout << output.tellp() << endl;

for (int i = 0; i < 15; i++) {
TestStruct a(10*i, "asdadas");
output.write(reinterpret_cast<char*>(&a), sizeof(a));
}

output.close();
fstream input("out.bin", ios::in | ios::binary);
input.seekg(2 * sizeof(TestStruct), ios::beg);

for (int i = 0; i < 5; i++) {
TestStruct a;
input.read(reinterpret_cast<char*>(&a), sizeof(a));
cout <<"file_pointer"<<input.tellg()<<'\t'<<a.a << endl;
}
}

我使用 seekp(0,ios::end) 在文件中添加新条目。所以当我运行这段代码时,文件应该会变大。但实际上文件根本没有改变。

这是输出:

>     0                  <--tellp() always return 0
> file_pointer108 20
> file_pointer144 30
> file_pointer180 40
> file_pointer216 50
> file_pointer252 60

最佳答案

ios::app 添加到 output 的标志中。你不需要做 output.seekp(0, ios::end); 然后。

关于C++ seekp(0,ios::end) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34238063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com