我是使用文件的初學者。我想在我的代碼中執行的操作是從用戶那裏獲得一個名稱,並將其隱藏在一個.bmp圖片中。並且還能夠從文件中再次獲取該名稱。但我想先將字符轉換爲ASCII碼(這是我的任務說)在C++中寫入和讀取二進制文件
我試圖做的是將名稱的字符更改爲ASCII碼,然後將它們添加到bmp圖片的末尾,我將以二進制模式打開。添加它們之後,我想從文件中讀取它們,並能夠再次獲取該名稱。
這是我迄今爲止所做的。但我沒有得到正確的結果。我得到的只是一些沒有意義的角色。這段代碼是對的嗎?
int main()
{
cout<<"Enter your name"<< endl;
char * Text= new char [20];
cin>> Text; // getting the name
int size=0;
int i=0;
while(Text[i] !='\0')
{
size++;
i++;
}
int * BText= new int [size];
for(int i=0; i<size; i++)
{
BText[i]= (int) Text[i]; // having the ASCII codes of the characters.
}
fstream MyFile;
MyFile.open("Picture.bmp, ios::in | ios::binary |ios::app");
MyFile.seekg (0, ios::end);
ifstream::pos_type End = MyFile.tellg(); //End shows the end of the file before adding anything
// adding each of the ASCII codes to the end of the file.
int j=0;
while(j<size)
{
MyFile.write(reinterpret_cast <const char *>(&BText[j]), sizeof BText[j]);
j++;
}
MyFile.close();
char * Text2= new char[size*8];
MyFile.open("Picture.bmp, ios:: in , ios:: binary");
// putting the pointer to the place where the main file ended and start reading from there.
MyFile.seekg(End);
MyFile.read(Text2,size*8);
cout<<Text2<<endl;
MyFile.close();
system("pause");
return 0;
}
我對std :: string和std :: vector沒有任何瞭解。到目前爲止,我學到的所有使用字符串的都是char數組形式。 –
@PA:我強烈建議您閱讀並使用它們,使用它們有很多優點。 – deepmax