下面這段程序是C++ How to Program 這本書里的一段程序。目的是創(chuàng)建一個文件并用write函數(shù)寫入100條初始記錄 “0, "", "", 0.0 ”。但是我運(yùn)行的結(jié)果都是亂碼。 我想是由于下面這條語句的問題。似乎把&blankClient 改成const char *, 就不會正常打印“0, "", "", 0.0 ”? 到底是什么原因產(chǎn)生亂碼呢?outCredit.write( reinterpret_cast<const char *>( &blankClient ), sizeof( clientData ) );源程序:// Fig. 14.11: clntdata.h// Definition of struct clientData used in // Figs. 14.11, 14.12, 14.14 and 14.15.#ifndef CLNTDATA_H#define CLNTDATA_Hstruct clientData {int accountNumber;char lastName[ 15 ];char firstName[ 10 ];double balance;};#endif// Fig. 14.11: fig14_11.cpp// Creating a randomly accessed file sequentially#include <iostream>using std::cerr;using std::endl;using std::ios;#include <fstream>using std::ofstream;#include <cstdlib>#include "clntdata.h"int main(){ofstream outCredit( "credit.txt", ios::binary );//ofstream outCredit( "credit.txt", ios::out );if ( !outCredit ) {cerr << "File could not be opened." << endl;exit( 1 );}clientData blankClient = { 0, "", "", 0.0 };for ( int i = 0; i < 100; i++ )// outCredit<<blankClient <<"\n";outCredit.write( reinterpret_cast<const char *>( &blankClient ), sizeof( clientData ) );return 0;}
求高手指點!關(guān)于C++中ofstream的write函數(shù)的用法?
阿波羅的戰(zhàn)車
2021-10-21 19:15:10