2011-11-26 116 views
2

好吧,我的簡單程序遇到了另一個問題。我的程序獲取文本文件,讀取它,然後刪除最後一個符號並輸出帶有更改的新文本文件。它盡我所能地做所有事情,除了它刪除所有空格。任何解決方案? 這裏是代碼:C++在更改後刪除文本文件中的空格

#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{ 
    char symbols[10000]; 
    ofstream outFile("outFile.out"); 
    ifstream inFile("inFile.in"); 

    for(int i=0;i<10000;i++) 
    { 
     inFile >> symbols[i]; 
    }  

    for(int j=0;j<10000;j++) 
    { 
     if(symbols[j]=='\0') 
     {  
      symbols[j-1] ='\0'; 
      break;   
     }    
    }  

    if(outFile.is_open()) 
    { 
     for(int l=0;l<10000;l++) 
     {  
      outFile << symbols[l]; 
     }    
    }  

    inFile.close(); 
    outFile.close(); 
    return 0; 
} 

P.S. 我的意思是,如果我給它 世界,你好

它輸出Helloworl 的空間魔術般地消失文本..

回答

2

使用

inFile.unsetf(std::ios::skipws); 

有一個機械手也一樣,如果你有iomanip

inFile >> std::noskipws; 
+0

它應該是>>不是<< :)但它的作品真的很好:)謝謝 – RnD

+0

是的,我最初得到了錯誤。我得到了那個特別的錯字。從做更多流輸出的輸入,我猜想:) – sehe

4

>>提取運營商,擁有一個char類型時,讀取下一非空白來自輸入文件的字符。所以,這會跳過輸入中的所有空白。

可以使用noskipws機械臂關閉此功能,像這樣:

inFile >> noskipws >> symbols[i]; 

或者,你可以儘量避免使用>>操作。例如,您可以使用istream::read()

+0

吧 - 像,去用C? – sehe

+0

@sehe:在完成我的編輯並重新載入頁面之前,我沒有看到您的答案。堆棧溢出在正常的編輯 - 優化 - 後期循環中不再顯示新的答案。 –

+0

嗯好的 - 我會相信你的。仍然想出'fopen' /'fread'的初步反應幾乎是值得的。我現在將保持中立 - 作爲公平的競爭對手,與_near_ - 平等的時機:) – sehe