在像我们这样的数组中,int a[5]
我们可以存储从 a[0] 到 a[4] 的 5 个值。不是这个..?
我有一个char mobile[10]
变量,我class
在这个变量中存储了正好 10 个字符的长字符串。但是当我从文件中读取它时,下一个变量(在类中这个变量之后声明)的几个字符被附加到变量中mobile
。调查出了什么问题需要几个小时。
我通过更改变量的顺序等尝试了一切。
最后,我将大小设置mobile
为 11 ( char mobile[11]
),然后将其存储到二进制文件中。然后一切顺利。
在这里,我创建了一个演示程序,可以展示我的研究:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <fstream.h>
#include <stdio.h>
class Test
{
public:
char mobile[10], address[30];
};
void main()
{
clrscr();
Test t;
// uncoment below to write to file
/*strcpy(t.mobile, "1234567890");
strcpy(t.address, "Mumbai");
fstream f("_test.bin", ios::binary | ios::out | ios::app);
f.write((char*)&t, sizeof(t));*/
// uncomment below to read from file
/*fstream f("_test.bin", ios::binary | ios::in);
f.read((char*)&t, sizeof(t));
cout << t.mobile << "\t" << t.address;*/
f.close();
getch();
}
我的假设是否正确,即我不能像char[n]
处理文件时那样在数组中存储 n 个字符,更具体地说是使用二进制文件..?
我是否应该总是额外增加 1 个所需尺寸的尺寸..??
我的编译器是 Turbo C++(可能是 3.0)。这是非常古老且已停产的产品。