2013-07-07 195 views
0

我的桌面上有多個.html文件,所有這些文件都鏈接在一起,但根據我自己的目錄。這意味着如果這些文件被放置在不同的計算機上,這些鏈接將不起作用。我試圖用C++編寫一個程序: 1)找到它所在的計算機的用戶名。 (我已經得到了那麼遠!) 2)在使用新用戶名的HTML文件的單個鏈接替換目錄中的用戶名。 我已經徹底研究過,發現一個人更換某些字符串的方式。但是,當我試圖做同樣的技巧時,它清除了整個文件。這是我的程序,因爲它是:替換.txt文件中的文本(C++)

 #include <iostream> 
    #include <Windows.h> 
    #include <gl/GL.h> 
    #include <gl/GLU.h> 
    #include <windows.h> 
    #include <WinBase.h> 
    #include <string> 
    #include <fstream> 
    #include <algorithm> 
    using namespace std; 

    int main() 
    { 
     TCHAR name [ UNLEN + 1 ]; 
     DWORD size = UNLEN + 1; 
     GetUserName((TCHAR*)name, &size); 

     string search_string = "Christian"; 
     string replace_string = "name"; 
     string inbuf; 
     fstream input_file("kormain.txt", ios::in); 
     ofstream output_file("kormain.txt"); 

     while (!input_file.eof()) 
     { 
      getline(input_file, inbuf); 

      int spot = inbuf.find(search_string); 
      if(spot >= 0) 
      { 
       string tmpstring = inbuf.substr(0,spot); 
       tmpstring += replace_string; 
       tmpstring += inbuf.substr(spot+search_string.length(), inbuf.length()); 
       inbuf = tmpstring; 
      } 

      output_file << inbuf << endl; 
     } 
     system ("PAUSE"); 
     return 0; 
    } 
+0

適當的解決方案將是相對URI的。這種方式甚至可以在網站上運行 – MSalters

回答

0

您正在打開相同的文件進行讀取和寫入,然後不檢查狀態。這可能會導致問題(取決於您的操作系統)。

作爲一個快速測試,改變你的output_file寫入到一個不同的文件名,看看你是否得到預期的結果。

+0

謝謝!我猜這只是與unicode不兼容? – user2557334

+0

不,不會與unicode有任何關係。根據操作系統的不同,打開寫入操作可能會失敗,因爲您已經打開閱讀。或者它可能有用,但一旦你寫入它,讀取開始出現問題。另一個「修復」是在打開文件後檢查狀態。 – John3136