1.练习背景:预定义几个字符串,保存到一个二进制文件(设为data1.dat)
2.操作要求:用二进制方式写入这些字符串,然后二进制的方法读出来,在console上面显示
以下是字符串
char line[5][20] = { "hello", "mingzhi", "you job is?", "coding", "I want to go there!!!" };
将字符串读入到data1.dat文件中,有多种方式,这里只采用其中一种
char sign = ' '; fstream file; file.open("data1.dat",ios::out|ios::binary); for(int i=0;i<5;i++) { file.write((char*)line[i],strlen(line[i])); file.write((char*)(&sign),sizeof(sign)); //A } file.close();
A行要注意一点,写入二进制流时,如果没有A行,那该二进制文件则没有换行符号的,所以要添加这行。这一行的语法也要稍加注意:
write()函数里的第一个参数一定是char*类型的,所以添加的变量不是指针的话,一定要注明是取地址符表明(char*)(&val)是个变量。
//ifstream infile; file.open("data1.dat",ios::in|ios::binary); char ch[30]; //file.unsetf(ios::skipws); //file.fill(' '); while(file.getline(ch,20)) { cout << ch << endl; } file.close();
上面的代码就是读取了,没有啥好注意的,就是老写错了getline,get这些函数的参数,第二个参数是不缺省的。