- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为我糟糕的英语道歉。我被 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/
在这个程序中我想改变文件中的一些值。现在我以附加模式打开文件并将我的 seekp 指针移动到我给定的位置。但问题是它在文件末尾写入数据而不是那里有 seekp 指针。 #include #includ
我在以二进制模式替换文件的一部分时遇到了一些问题。出于某种原因,我的 seekp() 行没有将文件指针放在所需位置。现在它将新内容附加到文件末尾,而不是替换所需的部分。 long int pos; b
执行以下代码后文件的内容应该是什么 int main (int, char**) { std::string s1 {"Hello world"}; std::string s2 {"
如果我在文件末尾执行 seekp 然后 write 会发生什么?我希望发生的是该文件会自动扩展到 seekp 位置的大小。如果是这样,它是否也通过向磁盘写入任何内容来填充文件的旧末尾和新位置之间的空间
以下代码适用于双向流并从文件中查找记录 ID,然后从文件中替换该记录的内容。但是在覆盖内容之前,它会将 put 指针移动到 get 指针的位置。通过tellp()和tellg()发现它们在移位前都已经
我正在尝试使用 C++ 在文件的特定位置写入条目 基本上我有 ofstream ofs("file.dat", ios::binary | ios::app); ofs.seekp(220, ios:
编辑,抱歉,这个问题显然与 failbit not being set when seekg seeks past end of file (C++,Linux) 重复 要到达我所在的位置,首先在终端
每当我想将位置设置为 X tellp return -1 时,fstream 中的 seekp() 有一个小问题。 代码: fstream file("Riot.exe", ios::in | ios
这个程序应该创建一个名为 Record.bin 的二进制文件,然后将用户输入的所有信息写入该文件。现在它到达了它在 Student B[10] 中读取的部分,并且它正确读取了 B[0],但是 B[]
我用 C++ 编写了以下代码,将 Student 对象写入文件,然后使用 seekp() 将输出指针移动到特定位置,在该位置我编写了一个 Student 对象,该对象替换了该位置的先前对象,并保留了其
我有以下代码: #include #include #include using namespace std; int main() { fstream in("test.txt");
我正在尝试写入以将数据追加到文件末尾,并且正在使用 seekp(streamoff off, ios_base::seekdir dir) 函数但它不追加,不知何故它在中间写入数据的文件。我尝试像这样
描述:我有一个包含几行的文本文件,我想在两行之间写入。 我尝试了什么: 我有一个循环来确定我想写的位置。当我尝试打开文件时,使用 seekp 定位输入,然后写入文件被截断。 示例 文件.txt: He
我刚刚注意到,通过“seekp”在 microsoft visual studio 中更改位置,我在处理文件时也隐含地更改了读取位置。 我想知道这是否是“可移植”行为?我可以期望阅读和写作的位置始终相
为我糟糕的英语道歉。我被 C++ 中的 fstream 困住了。这是我的代码。 #include #include using namespace std; struct TestStruct {
我创建了一个类 Student。 学生类: class Student { friend ostream& operator(&s), sizeof(s)); return s
我在 Debian x64 PC 上运行的 c++ 程序有一个奇怪的行为。 我无法设法先读取文件,然后写入另一个值,然后再读取这些值。我已经阅读了很多信息,包括关于 stackoverflow 的问题
我正在编写一个方法来替换二进制文件中的指定字符串,它在我用 seekp 设置的位置之前写入 NULL,然后写入字符串并关闭流。我只想替换文件中的一些字节。在这段代码之前,我尝试使用带有 ios::bi
一位面试官问我如何实现 tail(是的,linux shell 中的那个)。我的回答是,先寻找到文件的末尾,然后一个接一个地向前读取字符,如果遇到 \n,则表示一行已关闭,等等。我认为我的答案是正确的
我正在寻找一些关于 seekg() 和 seekp() 在写入文件时如何工作的说明。比如说我有一个像这样的文件: offset 0: 2 offset 4: 4 offset 8: 6 offset
我是一名优秀的程序员,十分优秀!