2012-07-26 49 views
3

在C++中,我製作了一個導出到二進制文件的程序,現在我正在製作一個閱讀器。它讀取正確,但只有1個問題。我的文件是一個包含一組數字的文件,當它被讀取並打印到您看到的屏幕上時,1470009300047000199. 3「000」組不應該在那裏。我使用ifstream加載這個文件並計劃保持這種狀態。有人可以告訴我如何刪除我的文件中的「000」組?如果我必須編寫另一個C++程序,那樣我就可以使用它了,我只需要刪除「000」並將其替換爲空格即可。從我的文件中刪除「000」組?

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(int argc, char* argv[]) 
{ 
    if (argc < 2) 
    { 
     cout << "Error 1"; 
     return 0; 
    } 
    else 
    { 
     int FileLength; 
     ifstream InputFile(argv[1], ios::binary); 
     ofstream OutputFile("DECOMPILED_FILE.txt"); 
     InputFile.seekg(0, ios::end); 
     FileLength = InputFile.tellg(); 
     InputFile.seekg(0, ios::beg); 
     for (int i = 0; i < FileLength; i++) 
     { 
      cout << InputFile.get(); 
     } 

     cin.get(); 
    } 
    return 0; 
} 
+1

您確定輸入文件中不存在零嗎?如果你在一些Unix中,你是否嘗試過'hexdump <你的文件名>? – 2012-07-27 00:02:42

+0

是的,我確定它們不在原始文件中。不,我不使用一些Unix – dvds414 2012-07-27 00:16:20

回答

2

怎麼樣正則表達式?嘗試在文件上找到子字符串'000',如果找到,則用「」替換它。 僞代碼:

for each line in the file do: 
    if line.strstr("000") then 
      line.replace("000", " ") 

     cout << line << endl; 
+0

對不起,我有點小菜。如何獲得我寫入文件的所有行,並將它們放入變量中? – dvds414 2012-07-27 00:15:36

+0

做你所說的主要問題是它被讀作char,當你將字符轉換爲字符串時,它們會被搞亂並且程序關閉。 – dvds414 2012-07-27 00:24:01

+0

@ dvds414我更新了我的答案...嘗試使用「000」,然後... – cybertextron 2012-07-27 00:35:53