-3
なぜバイナリファイルを開いて見ることができますか?奇妙な外観は不可能ですか? http://codepad.org/OwX99H0pバイナリファイルの内容が表示されるのはなぜですか?
- 文字列strを入力 - > CHAR ARR1 [] - > FILEOUT.DAT
- FILEOUT.DAT - > CHAR ARR2 [] - > [印刷画面
当該コード:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void NhapMang(char *&arr, string str , int &n)
{
n = str.length();
arr = new char[n];
for (int i = 0; i < n;i++)
{
arr[i] = str[i];
}
}
void XuatMang(char *arr, int n)
{
for (int i = 0; i < n;i++)
{
cout << arr[i];
}
}
void GhiFile(ofstream &FileOut, char *arr, int n)
{
FileOut.open("OUTPUT.DAT", ios::out | ios::binary);
FileOut.write(arr, n*sizeof(char));
FileOut.close();
}
void DocFile(ifstream &FileInt, char *&arr, int n)
{
FileInt.open("OUTPUT.DAT", ios::in | ios::binary);
arr = new char[n];
FileInt.read(arr, n*sizeof(char));
FileInt.close();
}
int main()
{
char *arr1;
int n1;
fflush(stdin);
string str;
getline(cin, str);
NhapMang(arr1, str,n1);
ofstream FileOut;
GhiFile(FileOut, arr1, n1);
char *arr2;
int n2 = n1;
ifstream FileInt;
DocFile(FileInt, arr2, n2);
XuatMang(arr2, n2);
delete[] arr1;
delete[] arr2;
system("pause");
return 0;
}
すべてがC++のバイト(または 'char []')であるためです。 'std :: ios :: binary'はちょうど多かれ少なかれ、* rawファイルを読むこと、*テキストファイル(*は実際には定義されていない意味を残しています)に意味のある変換をしないことを意味します。 – dhke
あなたは何を期待しましたか?バイナリファイルを開き、各バイトを 'cout 'にしました。この状況ではほかに何が起こるでしょうか? –
ファイル内容の奇妙な外観はバイナリのコンピュータコードです。バイナリファイルを守るためにコンテンツを適用することはできません。しかし、ここで私はそれを通常のように見ることができますか? 。私のプログラムは間違いありませんか? –