2013-12-22 60 views
0

我正在編輯現有的C++代碼,以便使用stringsteam打開多個文件。我有一個從1到7的整數的循環,並且有7個文件需要打開。這些文件被命名爲PMAP1.txt ... PMAP7.txt。我試圖打開它這種方式:C++:無法使用stringstream操作打開文件

  ifstream precipfile; 
      int j = 0; 
      stringstream ss; 
      string FileName; 

      for(j=1;j<6;j++){ 

       ss <<"PMap" << j <<".txt" << endl; 
       FileName = ss.str(); 
       precipfile.open(FileName.c_str(),ios::in); 

       if(!precipfile.good()) 
        ReportFatalError("Unable to find or open precipfile"); 
      } 

這並不適用於某些reason.It返回「無法找到或打開precipfile」工作。但是,如果我 打開一個文件只需使用一個文件名直接就works.Like:

    string FileName = ("PMap.txt"); 
        precipfile.open(FileName.c_str()); 

這works.Please幫助!

+1

每次打印'ss.str()'。 – chris

回答

4

裏面的循環你是不是重置stringstream對象

ss <<"PMap" << j <<".txt" << endl; 

因而你不斷追加的東西到字符串流無需刪除先前添加的東西。將循環中的上面一行替換爲以下兩行,以便在每次迭代中正確清除stringstream

ss.str(""); 
ss <<"PMap" << j <<".txt" << endl; 

這就是爲什麼碼只能使用一次 - 第一次流被清除,但後續的迭代它包含已經在以前的迭代中添加的所有字符。

+0

謝謝..我會試試 – Ravin

+0

@Ravin它工作嗎? – mathematician1975

+0

還不知道...似乎有另一個問題在別的地方,所以我不能運行編沒有..將盡快發佈我可以運行它。謝謝。 – Ravin

1

您的環路太小 - 將其更改爲for (j = 1; j <= 7; j++)